37 Number of Steps to Reduce a Number to Zero

題目

Given a non-negative integer num, return the number of steps to reduce it to zero. If the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

Example 1:

Input: num = 14
Output: 6
Explanation:
Step 1) 14 is even; divide by 2 and obtain 7.
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3.
Step 4) 3 is odd; subtract 1 and obtain 2.
Step 5) 2 is even; divide by 2 and obtain 1.
Step 6) 1 is odd; subtract 1 and obtain 0.

Example 2:

Input: num = 8
Output: 4
Explanation:
Step 1) 8 is even; divide by 2 and obtain 4.
Step 2) 4 is even; divide by 2 and obtain 2.
Step 3) 2 is even; divide by 2 and obtain 1.
Step 4) 1 is odd; subtract 1 and obtain 0.

Example 3:

Input: num = 123
Output: 12

Constraints:

0 <= num <= 10^6

分析

題意:給定一個非負整數,如果它是偶數,那就除以二,如果是奇數,那就減一,直到該數爲0;返回操作步數。

題目簡單易懂,直接上手。

解答

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

位運算(參考)

class Solution {
    public int numberOfSteps (int num) {
        
        int firstBitMask = 1;
        int steps = 0;
        while(num>0){
            if((num & firstBitMask) >0){
                num &= ~firstBitMask;
            }else{
                num = num >>1; 
            }
            steps ++;
        }
        return steps;
        
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章