# 1342. Number of Steps to Reduce a Number to Zero

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 <= 10^6

class Solution {
public:
int numberOfSteps(int num) {
int res = 0;
while (num > 0) {
num = (num % 2 == 0) ? num / 2 : (num - 1);
++res;
}
return res;
}
};

class Solution {
public:
int numberOfSteps(int num) {
if (num == 0) return 0;
int res = 0;
while (num > 0) {
res += (num & 1) ? 2 : 1;
num >>= 1;
}
return res - 1;
}
};

class Solution {
public:
int numberOfSteps(int num) {
return num == 0 ? 0 : log2(num) + bitset<32>(num).count();
}
};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1342

Minimum Moves to Reach Target Score

Count Operations to Obtain Zero

https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/

https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/solutions/502809/just-count-number-of-0-and-1-in-binary/

https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/solutions/502719/c-single-line-in-o-1-with-explanation/

LeetCode All in One 题目讲解汇总(持续更新中…)

（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，快快加入吧～）

|

Venmo 打赏

—|—

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation