坏了的计算器
题目描述:
在显示着数字的坏计算器上,我们可以执行以下两种操作:
双倍(Double):将显示屏上的数字乘 2;
递减(Decrement):将显示屏上的数字减 1 。
最初,计算器显示数字 X。
返回显示数字 Y 所需的最小操作数。
示例 :
输入:X = 2, Y = 3
输出:2
解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.
提示:
- 1 <= X <= 109
- 1 <= Y <= 109
解法
可以将过程反过来,由Y到X,如果为奇数就加1,偶数就减半,直到Y比X还要小,最后只需要逐次加到X。
代码
class Solution:
def brokenCalc(self, startValue: int, target: int) -> int:
cnt = 0
while target > startValue:
target = target + 1 if target % 2 else target // 2
cnt += 1
return cnt + startValue - target
测试结果
执行用时:28 ms, 在所有 Python3 提交中击败了 87.41% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了 35.66% 的用户
说明
算法题来源:力扣(LeetCode)