LeetCode-中心扩散
🧠 枚举回文中心,用左右指针向两边扩散,专治一切回文相关问题。 🧩 模板步骤 枚举中心位置 i 以 (i, i) 作为中心(奇数回文) 以 (i, i + 1) 作为中心(偶数回文) 左右指针同时扩散:left–、right++ 越界或不相等立即停止 ⭐ 模板 中心扩散函数 ...
LeetCode-单调栈
🧠 单调栈✅ 什么时候用👉 题目出现这三个词 → 直接上单调栈: 右边 / 左边 第一个 更大 / 更小 ⚡ 核心:谁被弹出,谁结算答案 ⭐ 模板1234567891011121314151617181920// 1. 初始化int n = nums.leng...
LeetCode-前缀和
🧠 通过提前累计数组的“历史和”,将任意连续区间的求和问题,转化为两次前缀值的相减。 一句话结论:👉pre 数组要比原数组的长度多一pre[0] = 0 是为了统一公式,避免边界特判前缀和 + 哈希: 找历史区间 ⭐ 模板前缀和 初始化int n = nums.l...
LeetCode-滑动窗口
🧠 通过移动 right 和 left,始终维护一个 [left, right] 的连续区间,并根据题目条件不断扩大或缩小这个区间。 一句话结论:👉 right 进窗(for 循环控制只增不减) left 出窗(只在 while (满足条件) 时移动只增不减)注意窗口状态,遇到出现次数与不...
LeetCode-左右双指针
🧠 解决具有单调性(Monotonicity)或需要两端向中间收缩的问题。 一句话结论:👉 数组有序(前提) 结构由两端点决定 可利用左右的元素的对称关系 可以排除出界元素在 while 循环内部如果还有指针移动(如跳过空格),必须再次判断 left < right,否则会发生索引越...
LeetCode-快慢指针(数组)
🧠 要求保持相对顺序原地修改,且要”删除/筛选/移动”元素 一句话结论:👉 四个问题:结构变不变(判断是否适用),什么情况可以保留,slow,fast快慢指针的核心不在于“删除”,而在于**“保留”**。 思路逆转:不要管哪些元素要删掉,只关心 “哪些元素应该被保留”,...

