Python程序:查找达到目标所需的操作次数
假设我们有两个值`start`和`end`,我们必须找到使用以下操作将`start`转换为`end`所需的最小操作数:
减1
乘以2
因此,如果输入类似于`start = 2, end = 7`,则输出将为3,因为我们可以将2乘以得到4,然后乘以2得到8,然后减去1得到7。
为了解决这个问题,我们将遵循以下步骤:
ans := 0
无限循环执行以下操作:
如果 end <= start,则
返回 ans + start - end
否则,如果 end 为奇数,则
end := end + 1, ans := ans + 1
否则,
end := end / 2 的商
ans := ans + 1
让我们看看下面的实现以更好地理解:
示例
class Solution: def solve(self, start, end): ans = 0 while True: if end <= start: return ans + start - end elif end % 2: end += 1 ans += 1 else: end //= 2 ans += 1 ob1 = Solution() start = 2 end = 7 print(ob1.solve(start, end))
输入
2, 7
输出
3
广告