package main import "fmt" func main() { fmt.Println(subarraySum([]int{1, 2, 1, 2, 1}, 3)) } func subarraySum(nums []int, k int) int { result := 0 hash := make(map[int]int) value := 0 hash[0] = 1 for i := range nums { value += nums[i] if v, ok := hash[value-k]; ok { result += v } hash[value]++ } return result } //func subarraySum(nums []int, k int) int { // slow := 0 // result := 0 // for slow < len(nums) { // value := 0 // fmt.Println("1") // for fast := slow; fast < len(nums); fast++ { // value += nums[fast] // if value == k { // result += 1 // } // } // slow++ // } // return result //}