题目来源
我的题解
方法一 位运算+统计二进制数中1的个数
对于每一个位置i都去计算i对应的二进制数中1的个数
时间复杂度:O( n log n u m n\log num nlognum)。 log n u m \log num lognum表示求二进制数中1的个数所需的时间
空间复杂度:O(1)
public int sumIndicesWithKSetBits(List<Integer> nums, int k) {
int n=nums.size();
int res=0;
for(int i=0;i<n;i++){
if(countOnes(i)==k)
res+=nums.get(i);
}
return res;
}
public int countOnes(int n){
int res=0;
while(n>0){
res+=(n&1)==1?1:0;
n=n>>1;
}
return res;
}
方法二 官方的一种优化计算二进制中1的个数的方法
官方题解
这个没看懂,大家自己去看官方题解吧
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~