1342
int count =0;
public int numberOfSteps (int num) {
if(num==0) {
return count;
}
if(num%2==0) {
num=num/2;
}else {
num--;
}
count++;
numberOfSteps(num);
return count;
}
简单递归
特优解
public int numberOfSteps (int num) {
int step = 0; //记录步数
while (num > 0) {
if ((num & 1) == 0) {//num为偶数 &符号 转换为二进制后 两个都是1 才得1
num >>= 1; //右移一位 就是除2
}
else { //num为奇数
num^=1; //等价于 num ^= 1 两个二进制对应位相同时,结果为0,否则结果为1
}
step++;
}
return step;
}
使用位运算符 更速度
LCP1
太简单 不再赘述
1281
public int subtractProductAndSum(int n) {
int sum=0,time=1;
int num=0;
while(n>=1){
num=n%10;
sum+=num;
time*=num;
n/=10;
}
return time-sum;
}
没什么改进空间
1295
public int findNumbers(int[] nums) {
int count=0;
for(int i:nums){
int flag=0;
while(i>0){
flag++;
i/=10;
}
if((flag&1)==0)
count++;
}
return count;
}
其他解 转字符串算length
771
public int numJewelsInStones(String J, String S) {
Set jSet = new HashSet();
for(char i:J.toCharArray())
jSet.add(i);
int count=0;
for(char i:S.toCharArray()){
if(jSet.contains(i))
count++;
}
return count;
}
或者暴力破解