Coding on 滑动窗口

滑动窗口及题单

Posted by Kylin on August 29, 2023

[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 的最小操作数,题解