560.subarray-sum-equals-k.go 261 B

123456789101112131415
  1. func subarraySum(nums []int, k int) int {
  2. cnt, n := 0, len(nums)
  3. sum := make([]int, n+1)
  4. m := make(map[int]int)
  5. m[0]++
  6. for i := 0; i < n; i++ {
  7. s := sum[i] + nums[i]
  8. if val, ok := m[s-k]; ok {
  9. cnt += val
  10. }
  11. m[s]++
  12. sum[i+1] = s
  13. }
  14. return cnt
  15. }