Python程序:查找将一个数字转换为另一个数字所需的最小操作数


假设我们有一个数字start和另一个数字end(start < end),我们必须找到使用以下操作将start转换为end所需的最小操作数:

  • 加1
  • 乘以2

因此,如果输入类似于start = 5,end = 11,则输出将为2,因为我们可以乘以2得到10,然后加1得到11。

为了解决这个问题,我们将遵循以下步骤:

  • ct:= 0
  • 当end/2 >= start时,执行
    • 如果end模2等于1,则
      • end := end - 1
      • end := end/2
      • ct := ct + 2
    • 否则,
      • end:= end/2
      • ct := ct + 1
  • ct := ct +(end-start)
  • 返回ct

让我们查看以下实现以更好地理解:

示例

 在线演示

class Solution:
   def solve(self, start, end):
      ct=0
      while(end/2>=start):
         if end%2==1:
            end-=1
            end=end/2
            ct+=2
         else:
            end=end/2
            ct+=1
      ct+=(end-start)
      return ct
ob = Solution()
print(ob.solve(5,11))

输入

5,11

输出

2

更新于: 2020年10月5日

337 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告