[编程题] lk [338. 比特位计数-位运算]
[编程题] lk 338. 比特位计数-位运算
题目
输入输出
思想:
题意是给5,那么就分别算0,1,2,3,4,5这些数字化为二进制的时候其中的1的个数,我们对每个数计算二进制个数的话都用一次位运算计数处理
方法1:位运算
class Solution {
//方法1:借助位运算
/*题目思想:题意是给5,那么就分别算0,1,2,3,4,5这些数字化为二进制的时候其中的1的个数
我们对每个数计算二进制个数的话都用一次位运算计数处理*/
public int[] countBits(int num) {
int[] res = new int[num+1];
res[0] = 0;
for(int i=1;i<=num;i++){
int count=0;
int j=i; //先拿到本次要处理的值保存给变量j,因为变量i在数组索引还要用
while(j!=0){
j = j & (j-1);
count++;
}
res[i] = count;
}
return res;
}
}
输出:
输入5:输出如下: