直接按要求走就行,一个while循环
class Solution {
public:
int numberOfSteps(int num) {
int k=num;
int co=0;
while(num)
{
if(num%2==1)
num=num-1;
else
num=num/2;
co++;
}
return co;
}
};
然后英雄老哥用的动规,一个数组存次数,然后读就行,该题这样复杂度较高,
但是,如果要多次用,则避免重复计算,节约时间
class Solution {
int f[1000000];
public:
int numberOfSteps(int num) {
for(int i=1;i<=num;i++)
{
if(i%2==0)
f[i]=f[i/2]+1;
if(i%2==1)
f[i]=f[i-1]+1;
}
return f[num];
}
};