优秀网站模板下载,郑州网站建设天强科技,windows.net做网站,天津多媒体设计公司思路 本题的主要思路为创建一个哈希表记录每个0~i的和#xff0c;在遍历这个数组的时候查询有没有sum-k的值在哈希表中#xff0c;如果有#xff0c;说明有个位置到当前位置的和为k。 有可能不止一个#xff0c;哈希表负责记录有几个sum-k#xff0c;将和记录下来。这…思路 本题的主要思路为创建一个哈希表记录每个0~i的和在遍历这个数组的时候查询有没有sum-k的值在哈希表中如果有说明有个位置到当前位置的和为k。 有可能不止一个哈希表负责记录有几个sum-k将和记录下来。这里把每个以i结尾的结果都算上了所以不用担心不全等问题。 这里需要注意的两个点为
m[0]1提前在哈希表注册一个0的结果因为如果刚好是0到当前i的话需要有一个记录被算上。m[sum]这行代码放的位置有个简单的方法来判断会不会影响当前i计算的结果那就是加到当前的和为0k也为0如果你放在前面的话就会算上这个结果但是当前i到当前i是没有元素的不算一种结果但是你加上了这个结果是错误的有影响的。
代码示例
func subarraySum(nums []int, k int) int {result:0m:make(map[int]int)m[0]1sum:0for i:0;ilen(nums);i{sumnums[i]if val,ok:m[sum-k];ok{resultval}m[sum]}return result
}