题目
暴力算法 O(n^3)
把所有子数组都撸一遍。
伪代码:
1 | for 子数组左端点 start //O(n) |
暴力算法优化 O(n^2)
用前缀和数组在 O(1) 时间内直接算得子数组和
伪代码:
1 | for 子数组左端点 start //O(n) |
for右端点end
用 HashSet / set
对于一个 end,要使得 start-end 之间最短,start 就要尽可能大
- 如何找到 prefixSum[start] = prefixSum[end + 1] - k 的最大 start?
用 HashMap / dict 记录得到某个 prefixSum 的最大 start 是多少