给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
直接法和位运算都行:
class Solution {
public:
int numberOfSteps (int num) {
int cnt = 0;
while (num) {
if ((num & 1)) {
if (num == 1) {
cnt += 1;
} else {
cnt += 2;
}
} else {
cnt += 1;
}
num >>= 1;
}
return cnt;
}
};