一、560. 和为 K 的子数组

这题我更愿意直接上前缀和。用一个累加和数组把'区间和'转成'两个前缀和的差',再配合计数表统计历史前缀和出现了多少次,思路就顺了。
from typing import List
from collections import defaultdict
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
presum = [0] * (len(nums) + 1)
for i, x in enumerate(nums):
presum[i + 1] = presum[i] + x
ans = 0
cnt = defaultdict(int)
for p in presum:
ans += cnt[p - k]
cnt[p] += 1
return ans
二、239. 滑动窗口最大值

先看暴力解法,代码短,能过样例,也最容易想到,但复杂度是 O(n^2),窗口一大就会明显慢下来。
from typing import List
class Solution:
() -> []:
(nums) == :
nums
res = []
left, right = , k
left <= ((nums) - k):
res.append((nums[left:right]))
left +=
right +=
res



