2024.1.26
- 题目来源
- 我的题解
- 方法一 位运算+统计二进制数中1的个数
- 方法二 官方的一种优化计算二进制中1的个数的方法
题目来源
力扣每日一题;题序:2859
我的题解
方法一 位运算+统计二进制数中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的个数的方法
官方题解
这个没看懂,大家自己去看官方题解吧
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~