將數字變成 0 的操作次數

將數字變成 0 的操作次數

難度簡單

給你一個非負整數 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

實現代碼:

package com.mtons.mblog.xxxx;


class Solution {
    /**
     * 輸入:num = 14
     * 輸出:6
     * 解釋:
     * 步驟 1) 14 是偶數,除以 2 得到 7 。
     * 步驟 2) 7 是奇數,減 1 得到 6 。
     * 步驟 3) 6 是偶數,除以 2 得到 3 。
     * 步驟 4) 3 是奇數,減 1 得到 2 。
     * 步驟 5) 2 是偶數,除以 2 得到 1 。
     * 步驟 6) 1 是奇數,減 1 得到 0 。
     *
     * @param num
     * @return
     */
    public int numberOfSteps(int num) {
        int count = 0;
        while (num != 0) {
            if (isOdd(num)) {
                ++count;
                num = num - 1;
            } else {
                num = num / 2;
                ++count;
            }
        }
        return count;
    }

    /**
     * 是否爲奇數
     * true:奇數
     *
     * @param num
     * @return
     */
    public boolean isOdd(int num) {
        if (num % 2 == 0) {
            return false;
        }

        return true;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章