力扣 1342. 將數字變成 0 的操作次數 C++

ganlanA發表於2020-10-04

給你一個非負整數 num ,請你返回將它變成 0 所需要的步數。 如果當前數字是偶數,你需要把它除以 2 ;否則,減去 1 。

示例 1:

輸入:num = 14
輸出:6
解釋:
步驟 1) 14 是偶數,除以 2 得到 7 。
步驟 27 是奇數,減 1 得到 6 。
步驟 36 是偶數,除以 2 得到 3 。
步驟 43 是奇數,減 1 得到 2 。
步驟 52 是偶數,除以 2 得到 1 。
步驟 61 是奇數,減 1 得到 0

示例 2:

輸入:num = 8
輸出:4
解釋:
步驟 18 是偶數,除以 2 得到 4 。
步驟 24 是偶數,除以 2 得到 2 。
步驟 32 是偶數,除以 2 得到 1 。
步驟 41 是奇數,減 1 得到 0

示例 3:

輸入:num = 123
輸出:12

提示:

0 <= num <= 10^6

C++

class Solution {
public:
    int numberOfSteps (int num) {
        int res = 0; 
        while(num){
            (num % 2 == 0) ? num /= 2 : num -= 1;
            res++;
        }
        return res;
    }
};

相關文章