Tagged

滑动窗口

Jun 15, 2022 LeetCode Patterns 9 min read

LeetCode(四)—— 滑动窗口技巧

如果你写过两层 for 循环去枚举所有连续子数组,那么滑动窗口多半就是你缺的那一步优化。它把 $O(nk)$ 或 $O(n^2)$ 的暴力枚举压成线性的一遍扫描,关键就在于"复用上一步算出来的东西"。本文从最朴素的直觉出发,先讲清楚思路,再用四道高频 LeetCode 题目把套路彻底落地,最后再补一个单调队列的进阶用法。

May 16, 2022 LeetCode Patterns 11 min read

LeetCode(二)—— 双指针技巧

哈希表是用空间换时间,双指针正好相反:用一点结构假设(数组有序、链表可能成环、答案落在某个连续窗口里),换来 $O(n)$ 时间和 $O(1)$ 额外空间。代码看起来再朴素不过——两个下标、一个 while 循环——但它是新手最容易踩坑的技巧:下标差一、死循环、漏掉去重、平手时移错指针。真正能把这些坑填掉的,不是死记移动规则,而是用循环不变量去思考。