程序,查找在Python中将一个数字转换为另一个数字所需的最少操作数
假设我们有一个数字开头和另一个数字结尾(开始<结束),我们必须找到使用这些操作将开始转换为结束所需的最小操作数-
递增1
乘以2
因此,如果输入就像开始=5,结束=11,那么输出将是2,因为我们可以将2乘以得到10,然后再加1以得到11。
为了解决这个问题,我们将遵循以下步骤-
ct:=0
当end/2>=开始时,执行
结束:=结束/2
ct:=ct+1
结束:=结束-1
结束:=结束/2
ct:=ct+2
如果endmod2与1相同,则
除此以外,
ct:=ct+(结束开始)
返回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