LeetCode-in-Java

2859. Sum of Values at Indices With K Set Bits

Easy

You are given a 0-indexed integer array nums and an integer k.

Return an integer that denotes the sum of elements in nums whose corresponding indices have exactly k set bits in their binary representation.

The set bits in an integer are the 1’s present when it is written in binary.

Example 1:

Input: nums = [5,10,1,5,2], k = 1

Output: 13

Explanation: The binary representation of the indices are:

0 = 0002

1 = 0012

2 = 0102

3 = 0112

4 = 1002

Indices 1, 2, and 4 have k = 1 set bits in their binary representation. Hence, the answer is nums[1] + nums[2] + nums[4] = 13.

Example 2:

Input: nums = [4,3,2,1], k = 2

Output: 1

Explanation: The binary representation of the indices are:

0 = 002

1 = 012

2 = 102

3 = 112

Only index 3 has k = 2 set bits in its binary representation. Hence, the answer is nums[3] = 1.

Constraints:

Solution

import java.util.List;

public class Solution {
    public int sumIndicesWithKSetBits(List<Integer> nums, int k) {
        int sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (countSetBits(i) == k) {
                sum += nums.get(i);
            }
        }
        return sum;
    }

    public static int countSetBits(int num) {
        int count = 0;
        while (num > 0) {
            num = num & (num - 1);
            count++;
        }
        return count;
    }
}