介绍个人网站的ppt怎么做,中国建筑集团有限公司排名,省建设信息中心查询,静态网页是什么题目
题目链接
分析
这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。
Java 中有 库函数 Integer.bitCount(num)#xff0c;这个函数的返回值就是 num 中 1 的个数。
代码
class Solution {public int sumIndicesWithKSetBits(List…题目
题目链接
分析
这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。
Java 中有 库函数 Integer.bitCount(num)这个函数的返回值就是 num 中 1 的个数。
代码
class Solution {public int sumIndicesWithKSetBits(ListInteger nums, int k) {int ans 0;for(int i 0;i nums.size();i ) {if(Integer.bitCount(i) k) {ans nums.get(i);}}return ans;}
}扩展
万一人家不让用库函数怎么办呢 那我们就需要老老实实自己写函数了。
我们首先考虑怎么求得一个数字num 包含 1 的个数。 我们都知道 1 任何数 都得任何数。 那么我们就可以让 1这个数的每一位 如果等于1就代表最后一位是1然后右移这个数字判断num二进制数的倒数第二位是否是1依次判断直到这个数字被移动为 0 为止。 下面看一下这段的代码 int find(int num) {int count 0;while(num ! 0) {if((num 1) 1) count;num 1;}return count;}根据上面的函数find我们就知道了一个数字二进制中 1 的个数了接下来就可以解决 leetCode上面的题目了
class Solution {public int sumIndicesWithKSetBits(ListInteger nums, int k) {int ans 0;for(int i 0;i nums.size();i ) {if(find(i) k) {ans nums.get(i);}}return ans;}int find(int num) {int count 0;while(num ! 0) {if((num 1) 1) count;num 1;}return count;}
}