问题描述
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
练习地址
实现
2、 实现
class Solution {
public int numberOfSteps(int num) {
if (num == 0) return 0;
int count = 0;
while (num > 0) {
if ((num & 1) == 0) {
num /= 2;
} else {
num -= 1;
}
count++;
}
return count;
}
}
1、位运算
int numberOfSteps (int num){
int count = 0;
while(num)
{
if(num % 2)
num ^= 1; //异或
else
num >>= 1;
count++;
}
return count;
}
// https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero/solution/wei-yun-suan-qiu-jie-by-shguan/