Number of Steps to Reduce a Number to Zero

easy math bit manipulation

Problem

Given a non-negative integer num, in one step you can divide it by 2 if it is even, or subtract 1 if it is odd. Return the number of steps to reduce num to 0.

Inputnum = 14
Output6
14 → 7 → 6 → 3 → 2 → 1 → 0 = 6 steps.

def number_of_steps(num):
    steps = 0
    while num > 0:
        if num & 1: num -= 1
        else: num >>= 1
        steps += 1
    return steps
function numberOfSteps(num) {
  let steps = 0;
  while (num > 0) {
    if (num & 1) num -= 1;
    else num >>= 1;
    steps++;
  }
  return steps;
}
class Solution {
    public int numberOfSteps(int num) {
        int steps = 0;
        while (num > 0) {
            if ((num & 1) == 1) num -= 1;
            else num >>= 1;
            steps++;
        }
        return steps;
    }
}
int numberOfSteps(int num) {
    int steps = 0;
    while (num > 0) {
        if (num & 1) num -= 1;
        else num >>= 1;
        steps++;
    }
    return steps;
}
Time: O(log n) Space: O(1)