[hot100]和为K的子数组-Python3
视频题解参考:和为K的子数组
1)记录前缀和出现次数的原因:
存在两个前缀和为10的时候,10-k=4,4存在在前缀和中,说明存在这样一个连续序列(子数组),如果有两个10,那么可能存在2个连续的,和为6的子数组
整个思路:
1>记录前缀和
2>判断(前缀和-k) 是否在hash表中(如果存在,则说明存在这样一个子数组*,因为前缀和是由之前的序列累加出来的,前缀和减去K如果刚好在之前的前缀和中,则说明刚好存在这样一个连续子数组),如果在则将hash表中对应前缀和次数加到count
3>将前缀和加入到hash表中计算出现次数,需要用到.get(pre,0)+1,如果pre存在则+1,不存在则设置为0
4.[1,1,1]的情况需要预设count_pre = {0:1}的前缀和,避免报错