二手交易网站建设方案,签名设计在线,ui设计培训班排名,广告联盟平台系统1. 题目
在显示着数字的坏计算器上#xff0c;我们可以执行以下两种操作#xff1a;
双倍#xff08;Double#xff09;#xff1a;将显示屏上的数字乘 2#xff1b;递减#xff08;Decrement#xff09;#xff1a;将显示屏上的数字减 1 。
最初#xff0c;计算器…1. 题目
在显示着数字的坏计算器上我们可以执行以下两种操作
双倍Double将显示屏上的数字乘 2递减Decrement将显示屏上的数字减 1 。
最初计算器显示数字 X。
返回显示数字 Y 所需的最小操作次数。
示例 1
输入X 2, Y 3
输出2
解释先进行双倍运算然后再进行递减运算 {2 - 4 - 3}.示例 2
输入X 5, Y 8
输出2
解释先递减再双倍 {5 - 4 - 8}.示例 3
输入X 3, Y 10
输出3
解释先双倍然后递减再双倍 {3 - 6 - 5 - 10}.示例 4
输入X 1024, Y 1
输出1023
解释执行递减运算 1023 次提示
1 X 10^9
1 Y 10^9来源力扣LeetCode 链接https://leetcode-cn.com/problems/broken-calculator 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 逆向思考
让 Y 加1或者 除以2如果 Y是奇数先1再除以2如果是偶数就直接除以2
class Solution {
public:int brokenCalc(int X, int Y) {if(X Y)return X-Y;int n 0;while(X Y){if(Y%2 1){Y (Y1)1;n 2;}else{Y 1;n;}}return X-Yn;}
};