当前位置: 首页 > news >正文

计算K置位下标对应元素的和

View Post

计算K置位下标对应元素的和

计算K置位下标对应元素的和

目录
  • 计算K置位下标对应元素的和
    • 思路
    • 时间复杂度与空间复杂度
    • Integer.bitCount(i) 详细用法

image

核心:判断的是下标的二进制中 1 的个数,而不是元素本身的值。
注意

  • 使用 .size() 获取 List 的长度。

  • 使用 .get(index) 读取元素。

  • 使用 .set(index, value) 修改元素。

  • 不能对 List 使用 [] 运算符。

思路

1.遍历数组 nums 的每一个下标 i(从 0 到 nums.length-1)。
2.计算 i 的二进制表示中 1 的个数,即“置位”个数。
3.如果该个数等于 k,则将 nums[i] 累加到结果中。
4.遍历结束后返回总和

class Solution {public int sumIndicesWithKSetBits(List<Integer> nums, int k) {int sum = 0;for (int i = 0; i < nums.size(); i++) {// 如果下标 i 的二进制中 1 的个数等于 kif (Integer.bitCount(i) == k) {sum += nums.get(i);   // 累加对应元素}}return sum;}
}

时间复杂度与空间复杂度

时间复杂度:O(n),其中 n 是数组长度。每个下标计算 Integer.bitCount 是 O(1) 操作。

空间复杂度:O(1),仅使用常量额外空间。

Integer.bitCount(i) 详细用法

作用:返回整数 i 的二进制补码表示中 1 的个数(即“置位”个数)。