题目链接:
这个题其实很简单,但是要注意一个点,是“下标”的二进制位等于k,而不是数组中的值中的二进制位和k相等。
一个数,判断二进制位中的个数,只要是%2 == 1即可,然后数字/2.
代码如下:
int sumIndicesWithKSetBits(int* nums, int numsSize, int k){
int count = 0;
int sum = 0;
for(int i = 0;i < numsSize;i++)
{
int tmp = i;
int count = 0;
while(tmp)
{
if(tmp % 2 == 1)
{
count++;
}
tmp /= 2;
}
if(count == k)
{
sum += nums[i];
}
}
return sum;
}