You are given a 0-indexed integer array nums
and an integer k
.
Return the sum of the elements of nums
at indices where the number of 1s in the binary representation of the index is k
.
nums
contain negative numbers?
nums
can contain negative numbers.k
?
k
is a non-negative integer and will be less than or equal to the number of bits used to represent the indices of nums
.nums
?
nums
can be up to (2^{20}).k
, add the element at that index to the sum.def sum_indices_with_k_set_bits(nums, k):
def count_set_bits(n):
return bin(n).count('1')
total_sum = 0
for i in range(len(nums)):
if count_set_bits(i) == k:
total_sum += nums[i]
return total_sum
count_set_bits(n)
: Returns the number of 1s in the binary representation of n
by using bin(n).count('1')
.total_sum
to 0.i
in the array nums
.count_set_bits(i)
to get the number of set bits.k
, add nums[i]
to total_sum
.total_sum
.bin(i).count('1')
runs in (O(\log i)), but practically it is very fast.nums
is n
.n
is the length of nums
, but the logarithmic factor is small in practice given Python’s efficient handling of integers.This solution ensures that we are efficiently calculating the sum by leveraging Python’s optimized bit manipulation tools.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?