package top100liked import "testing" // https://leetcode.cn/problems/subarray-sum-equals-k/description/?envType=study-plan-v2&envId=top-100-liked // 这题好难,理解不能 func subarraySum(nums []int, k int) int { freq := make(map[int]int) freq[0] = 1 cur := 0 res := 0 for _, v := range nums { cur += v if f, ok := freq[cur-k]; ok { res += f } freq[cur]++ } return res } func TestS10(t *testing.T) { println(subarraySum([]int{1, 1, 1}, 2)) println(subarraySum([]int{1, 2, 3}, 3)) println(subarraySum([]int{1}, 0)) println(subarraySum([]int{-1, -1, 1}, 0)) }