Leetcode: 1342

1 minute read

1342. 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.

Constraints:

  • 0 <= num <= 10^6

Solution:

class Solution {
    public int numberOfSteps (int num) {
        
        //normal solution
        
        // int count = 0;
        // //while loop check if num become zero
        // while(num > 0){
        //     //odd, one more step
        //     if( num % 2 == 1){
        //         count = count + 1;
        //         num--;
        //     }
        //     //get new num
        //     if(num != 0){
        //         num = num / 2;  
        //         count++;
        //     }
        // }
        // return count;
        
        
        //binary solution
        int count = 0;
        while(num > 0){
            count += ((num & 1) == 1 && num != 1)?  2 : 1;
            num >>= 1;
        }
        return count;
        
    }
}

Updated: