Number of Steps to Reduce a Number to Zero | February Leetcoding Challenge 2021 | Day 12
logo
Manas Sinha
Developer | Designer

By Manas | 12 February 2021

February LeetCoding Challenge 2021

Day 12

Number of Steps to Reduce a Number to Zero

PROBLEM  STATEMENT:
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
Simulate the process to get the final answer.

Explanation

ALGORITHM:
  • Maintain a step count variable.
  • Check if the number is divisible by 2
  • If it is not even it will take one extra step to make it even, i.e., subtracting 1.
  • increase the step variable by 1
  • Divide the number by 2.
  • repeat until reach 0

code

class Solution {
public:
    int numberOfSteps (int num) {
        if(!num) return 0;
        int step = 1;
        int check_bit = 1;
        while(num>1){
            if(num & check_bit){
                step += 1;        
            }
            step += 1;
            num = num >> 1;
        }
        return step;
    }
};

LEAVE A COMMENT

If you like the post leave a comment and share it.

Leave a Reply