【前缀和】560. 和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
示例 1:
输入:nums = [1,1,1], k = 2
输出:2
示例 2:
输入:nums = [1,2,3], k = 3
输出:2
思路:前缀和
前缀和定义:定义前缀和数组pre, 使得pre[i] 为 nums[0], ... , nums[i] 的所有数的和, pre[i] 可以从pre[i-1] 得到, 即 pre[i] = pre[i-1] + nums[i]
1 from collections import defaultdict 2 class Solution: 3 def subarraySum(self, nums: List[int], k: int) -> int: 4 pre = defaultdict(int) # 记录前缀和出现的次数 5 pre[0] = 1 # 前缀和为0的出现1次 6 ans = 0 7 cur = 0 # 记录前缀和 8 for num in nums: 9 cur += num 10 if cur - k in pre: # 由于使用的是 defaultdict(int),字典中不存在key时,默认值为0,此if 可以省略。 11 ans += pre[cur-k] 12 pre[cur] += 1 13 return ans
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~