问题描述
给你一个非负整数 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; //异或elsenum >>= 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/