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

更新于:2020年10月21日

浏览量:333

开启您的职业生涯

完成课程获得认证

开始学习
广告