用ppt画了个示意图,红色的是当前遍历到的前缀和 p r e s u m,加入他之前有两个前缀和等于 p r e s u m ? k- k ?k(蓝色范围),那么很明显,就会有两个连续子数组的和为 k k k,对应图中橙色范围 。
class Solution:def subarraySum(self, nums: List[int], k: int) -> int:# 要求的连续子数组count = 0n = len(nums)preSums = collections.defaultdict(int)preSums[0] = 1presum = 0for i in range(n):presum += nums[i]# if preSums[presum - k] != 0:count += preSums[presum - k]# 利用defaultdict的特性,当presum-k不存在时,返回的是0 。这样避免了判断preSums[presum] += 1# 给前缀和为presum的个数加1return count
【438. 找到字符串中所有字母异位词Medium】
- 中国本土的十大可爱名犬,在你身边你能找到几只那? 中国十大名犬品种
- 机械硬盘显示无法访问磁盘结构损坏且无法读取,里面的文件怎样找到
- chatgpt赋能python:Python如何通过搜索引擎找到答案?
- 内销怎么开发客户,做内销业务没有关系如何找到客户呢 郁闷啊
- 用于大量文本数据压缩存储 ChatGPT刷力扣面试题 01.06.字符串压缩
- “斯人”版的教材,还真找到了 冀教版中国之最
- 载入吉尼斯的食人猛兽:流窜两国吃掉436人击毙后才找到食人原因 吉尼斯记录动物老虎
- 彩色旅图·西欧纪行|在塞戈维亚找到迪士尼童话白雪公主城堡原型 吉尼斯记录跟迪斯尼记录
- 2 javascript截取两个符号之间的字符串:lastIndexOf匹配和
- 做风投的都是什么人,怎么找到风险投资人