LeetCode?启动!!!

【LeetCode】每日一题 2024_1_25 计算 K 置位下标对应元素的和(位运算/调库)-LMLPHP
今天状态调整正式结束,寒假学习正式开始。

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

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

题目描述

【LeetCode】每日一题 2024_1_25 计算 K 置位下标对应元素的和(位运算/调库)-LMLPHP

代码与解题思路

位运算

func sumIndicesWithKSetBits(nums []int, k int) (ans int) {
    for i, v := range nums {
        if getCnt(i) == k {
            ans += v
        }
    }
    return ans
}

func getCnt(i int) int {
    cnt := 0
    for i > 0 {
        if i & 1 == 1 {
            cnt++
        }   
        i >>= 1
    }
    return cnt
}

我们根据题目的要求,去求出数组每个小标位置的 “置位”,当该下标的置位 == k,证明符合题目要求,就将他们的和加到一起

库函数

func sumIndicesWithKSetBits(nums []int, k int) (ans int) {
	for i, v := range nums {
		if bits.OnesCount(uint(i)) == k {
			ans += v
		}
	}
	return ans
}

在 go 语言,使用 bits.OnesCount(),传一个 uint 类型的数进去,能够算出他的置位是多少,不过我这里还是推荐把位运算的方法学会,位运算的方法也很好理解,更容易记忆

01-27 14:34