41 lines
633 B
Go
41 lines
633 B
Go
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
|
|
//}
|