建站 赚钱,dede页码的调用 网站,江门住房与城乡建设局官方网站,网站的建设与维护需要资质吗目录链接#xff1a;
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目#xff1a;
https://github.com/September26/java-algorithms 原题链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 描述#xff1a;
给你一个下… 目录链接
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目
https://github.com/September26/java-algorithms 原题链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 描述
给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。
请你用整数形式返回 nums 中的特定元素之 和 这些特定元素满足其对应下标的二进制表示中恰存在 k 个置位。
整数的二进制表示中的 1 就是这个整数的 置位 。
例如21 的二进制表示为 10101 其中有 3 个置位。 示例 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 10001 nums[i] 1050 k 10 解题思路
定义方法countOnes代表num中以二进制表示时1的个数。
然后判断个数如果countOnes个数符合预期则添加到sum中。 代码
class Solution {
public:int sumIndicesWithKSetBits(vectorint nums, int k){int sum 0;for (int i 0; i nums.size(); i){if (countOnes(i) k){sum nums[i];}}return sum;}// 函数用于计算二进制中1的个数int countOnes(int num){int count 0;while (num){// 每次将最低位的1变为0并累加计数count num 1;// 将num右移一位准备检查下一位num 1;}return count;}
};