Problem: 560. 和為 K 的子陣列
給你一個整數陣列 nums 和一個整數 k ,請你統計並返回 該陣列中和為 k 的子陣列的個數 。
子陣列是陣列中元素的連續非空序列。
示例 1:
輸入:nums = [1,1,1], k = 2
輸出:2
示例 2:
輸入:nums = [1,2,3], k = 3
輸出:2
思路
看了提示 使用字首和配合雜湊
Code
func subarraySum(nums []int, k int) int {
result := 0
// 看了提示 使用字首和配合雜湊
// 使用迴圈計算字首和
prefixSum := 0
mapIntInt := make(map[int]int)
mapIntInt[0]++
for _, value := range nums {
// 當前字首和減去k即為需要查詢的字首和
prefixSum += value
if v, ok := mapIntInt[prefixSum-k]; ok {
// 找到
result += v
}
// 將當前字首和存入map
mapIntInt[prefixSum]++
}
return result
}