示例 1:
输入:nums = [5,10,1,5,2], k = 1
输出:13
解释:下标的二进制表示是:
0 = 0002
1 = 0012
2 = 0102
3 = 0112
4 = 1002
下标 1、2 和 4 在其二进制表示中都存在 k = 1 个置位。
因此,答案为 nums[1] + nums[2] + nums[4] = 13 。
示例 2:
输入:nums = [4,3,2,1], k = 2
输出:1
解释:下标的二进制表示是:
0 = 002
1 = 012
2 = 102
3 = 112
只有下标 3 的二进制表示中存在 k = 2 个置位。
因此,答案为 nums[3] = 1 。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 105
0 <= k <= 10
2.题目思想:
采用双循环的方式进行,内层循环判断置位,外层循环递增坐标
3.题目代码:
class Solution {
public:
int sumIndicesWithKSetBits(vector<int>& nums, int k) {
int sum = 0;
for(int i = 0;i < nums.size();i++){
int count = 0;
int index = i;
while(index){
if(index % 2 == 1){
count++;
}
index /= 2;
}
if(count == k){
sum += nums[i];
}
}
return sum;
}
};