滑动窗口和双指针
分组循环
一种特殊情况的同向双指针,可以优化一个指针
适用场景
数组会被分割成若干组,每一组处理逻辑是相同的。
核心思想
外层循环负责遍历组之前的准备工作(记录开始位置),和遍历组之后的统计工作(更新答案最大值)。
内层循环负责遍历组,找出这一组最远在哪结束。
模板
n = len(nums)
i = 0
while i < n:
start = i
while i < n and ...:
i += 1
# 从 start 到 i-1 是一组
# 下一组从 i 开始,无需 i += 1