---
tag: algorithm
---
# 数组
1. [二分查找](https://leetcode.cn/problems/binary-search/)
   进度：仅完成主题干。
   注意：
   - 二分查找时注意区间的边界，当取 `[left, right]` 时，当 `left == right` 是有意义的，所以循环的条件为 `while(left < right)`；同理，当取 `[left, right)` 时，循环的条件为 `while(left <= right)`。

2. [移除元素](https://leetcode.cn/problems/remove-element/)
   进度：仅完成主题干。
   解题：双指针法
   - 快慢指针法
   - 相向指针法(√)：减少元素移动次数

3. [有序数组的平方](https://leetcode.cn/problems/minimum-size-subarray-sum/)
   进度：完成主题干。
   注意：
	- 指针可以从中间向两侧扫描，最好从两侧向中间扫描。

4. 长度最小的子数组
   进度：仅完成主题干。
   解题：滑动窗口。

5. [螺旋矩阵II](https://leetcode.cn/problems/spiral-matrix-ii/)
   进度：仅完成主题干。
   解题：找规律。

# 栈和队列
| 序号 | 章节                         | 进度   | 解题       | 注意 | 回顾 |
| ---- | ---------------------------- | ------ | ---------- | ---- | ---- |
| 1    | 栈实现队列                   | 完成   |            |      |      |
| 2    | 队列实现栈                   | 完成   |            |      |      |
| 3    | 有效的括号                   | 完成   |            |      |      |
| 4    | 删除字符串中的所有相邻重复项 | 完成   |            |      |      |
| 5    | 逆波兰表达式                 | 完成   |            |      |      |
| 6    | 滑动窗口最大值               | 未完成 | 有序队列   |      | √    |
| 7    | 前k个高频元素                | 未完成 | 优先级队列 |      | √    |

# 贪心算法
从局部最优解推全局最优解。做题时最主要就是找反例证明贪心算法不奏效，否则大部分可以使用贪心算法。
| 序号 | 章节     | 进度 | 解题 | 注意                          | 回顾 |
| ---- | -------- | ---- | ---- | ----------------------------- | ---- |
| 1    | 分发饼干 | 完成 |      | 大胃口吃大饼干/小饼干喂小胃口 | √    |
| 2    | 摆动序列 |      |      |                               |      |
