29 lines
590 B
Go
29 lines
590 B
Go
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))
|
|
}
|