1. 题目
2. 思路
(1) 模拟法
- 当num为偶数时,最低位为0,除以2相当于去掉最低位的0;当num为奇数时,最低位为1,减1相当于将最低位的1变成0。
- 总操作次数等于将所有1变成0再加上最高位1右边的所有位数。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int numberOfSteps(int num) {
int res = Integer.bitCount(num);
while (num > 1) {
res++;
num >>= 1;
}
return res;
}
}