难度:简单
目录
一、问题描述
这里直接采用的是LeetCode上面的问题描述。
给你一个非负整数 num
,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
下面给出示例:
提示:
0 <= num <= 10^6
二、思路
1、解题思路
统计次数, num 是奇数时 减一, num 是偶数时 除二。一个 while循环 即可,直接将 num 作为循环条件 为0时循环停止。
三、解题
1、代码实现
class Solution {
public:
int numberOfSteps(int num) {
int ans = 0;
while(num){
if(num%2){
num -= 1;
ans++;
}else{
num /= 2;
ans++;
}
}
return ans;
}
};
2、时间复杂度 and 空间复杂度
时间复杂度:,n 为传入的数
空间复杂度: