假设我们有一个坏掉的计算器,显示屏上显示了一个数字,我们只能执行两个操作-
双倍-将显示屏上的数字乘以2,或;
递减-这会将显示的数字减少1,
最初,计算器显示的是数字X。我们必须找到显示数字Y所需的最少操作数。
因此,如果输入像X = 5且Y为8,则输出将为2,减1,然后减一
为了解决这个问题,我们将遵循以下步骤-
res:= 0
而Y> X
res:= res + Y mod 2 +1
Y:= Y / 2,当Y为偶数时,否则(Y +1)/ 2
返回res + X-Y
让我们看下面的实现以更好地理解-
class Solution(object): def brokenCalc(self, X, Y): res = 0 while Y > X: res += Y % 2 + 1 Y = Y // 2 if Y % 2 == 0 else (Y + 1)//2 return res + X - Y ob = Solution()print(ob.brokenCalc(5,8))
5 8
输出结果
2