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

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告