Leetcode 991.壞了的計算器(Broken Calculator)

Leetcode 991.壞了的計算器

1 題目描述(Leetcode題目鏈接

  在顯示着數字的壞計算器上,我們可以執行以下兩種操作:

  • 雙倍(Double):將顯示屏上的數字乘 2;
  • 遞減(Decrement):將顯示屏上的數字減 1 。

最初,計算器顯示數字 X。

返回顯示數字 Y 所需的最小操作數。

輸入:X = 2, Y = 3
輸出:2
解釋:先進行雙倍運算,然後再進行遞減運算 {2 -> 4 -> 3}.
輸入:X = 3, Y = 10
輸出:3
解釋:先雙倍,然後遞減,再雙倍 {3 -> 6 -> 5 -> 10}.

提示:

  • 1 <= X <= 10^9
  • 1 <= Y <= 10^9

2 題解

  轉化爲將Y變成X需要的步數,這樣操作就變成了除以2和加1。貪心策略爲:Y是偶數就除以2,Y是奇數則加1。

class Solution:
    def brokenCalc(self, X: int, Y: int) -> int:
        res = 0
        while X < Y:
            if Y % 2 == 0:
                Y //= 2
            else:
                Y += 1
            res += 1
        return res + X - Y
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章