2024.1.26力扣每日一题——计算 K 置位下标对应元素的和

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的个数的方法

官方题解
这个没看懂,大家自己去看官方题解吧

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈~

你可能感兴趣的:(java,力扣每日一题,leetcode,算法,职场和发展,java)