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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告