---
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个高频元素                | 未完成 | 优先级队列 |      | √    |

# 贪心算法
先算局部最优解，然后