[E模拟] lc2859. 计算 K 置位下标对应元素的和(模拟+数位分解)

文章目录

    • 1. 题目来源
    • 2. 题目解析

1. 题目来源

链接:2859. 计算 K 置位下标对应元素的和

2. 题目解析

注意读题就行…是下标,不是数组中的元素。

思路:

  • 枚举数组下标 i,按位分解得到比特位 1 的数量,判断并累加数组元素到结果中就行了。

  • 时间复杂度 O ( n ) O(n) O(n)
  • 空间复杂度 O ( 1 ) O(1) O(1)

class Solution {
public:
    int sumIndicesWithKSetBits(vector<int>& nums, int k) {
        int res = 0;
        for (int i = 0; i < nums.size(); i ++) {
            int cnt = 0, tmp = i;
            while(tmp) {
                cnt += tmp & 1;
                tmp >>= 1;
            }
            if (cnt == k) res += nums[i];
        }

        return res;
    }
};

你可能感兴趣的:(算法,数据结构)