Welcome to Subscribe On Youtube
1342. Number of Steps to Reduce a Number to Zero
Description
Given an integer num
, return the number of steps to reduce it to zero.
In one step, 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 <= 106
Solutions
-
class Solution { public int numberOfSteps(int num) { int ans = 0; while (num != 0) { num = (num & 1) == 1 ? num - 1 : num >> 1; ++ans; } return ans; } }
-
class Solution { public: int numberOfSteps(int num) { int ans = 0; while (num) { num = num & 1 ? num - 1 : num >> 1; ++ans; } return ans; } };
-
class Solution: def numberOfSteps(self, num: int) -> int: ans = 0 while num: if num & 1: num -= 1 else: num >>= 1 ans += 1 return ans
-
func numberOfSteps(num int) int { ans := 0 for num != 0 { if (num & 1) == 1 { num-- } else { num >>= 1 } ans++ } return ans }
-
function numberOfSteps(num: number): number { let ans = 0; while (num) { num = num & 1 ? num - 1 : num >>> 1; ans++; } return ans; }
-
impl Solution { pub fn number_of_steps(mut num: i32) -> i32 { let mut count = 0; while num != 0 { if num % 2 == 0 { num >>= 1; } else { num -= 1; } count += 1; } count } }