[TOC]
同向双指针
满足单调性的题目可以用同向双指针
比如209,left移动会从满足要求过渡到不满足要求;right移动会从不满足要求过渡到满足要求;
Template
以209为例, 寻找nums中的最短子数组的长度,该子数组的和大于等于target
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
n = len(nums)
res = n+1
left,s = 0,0
for right,x in enumerate(nums): ##左端点自由,枚举右端点
s+=x
while s>=target: ##建议使用while循环,1)更新答案;2)缩进左断点
res=min(res,right-left+1)
s-=nums[left]
left+=1
return res if res<=n else 0
Leetcode 题单
713. 乘积小于 K 的子数组,题解
1004. 最大连续 1 的个数 III,题解
1234. 替换子串得到平衡字符串,题解
1658. 将 x 减到 0 的最小操作数,题解