LeetCode 解題練習:Number of Steps to Reduce a Number to Zero

 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

題目原文描述 https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/

中文描述

給定一個整數 num ,算出需要幾步驟才能減至為零。一個步驟定義如下:若現在數字是偶數,請除以 2,否則請減去 1 。


範例一:

輸入 4 

輸出 3

因為 

步驟一:4 / 2 = 2。

步驟二:2 / 2 = 1。

步驟三:1 - 1 = 0。


範例二:

輸入 7

輸出 5

因為 

步驟一:7 - 1 = 6。

步驟二:6 / 2 = 3。

步驟三:3 - 1 = 2。

步驟四:2 / 2  =1。

步驟五:1 - 1 = 0。


解法一:

使用迴圈、if、取餘數運算子。


Python Code

class Solution:
    def numberOfSteps(self, num: int) -> int:
        steps = 0
        while num > 0:
            if num % 2 == 0:
                num /= 2
            else:
                num -= 1
            steps += 1
       
        return steps


解法二:

使用位元運算子。


Python Code

class Solution:
    def numberOfSteps(self, num: int) -> int:
        steps = 0
        bitmask = 1
        while num > 0:
            if num & bitmask == 0:
                num = num >> 1
            else:
                num -= 1
            steps += 1
       
        return steps

沒有留言: