题目进展
题号 | 状态 | 思想 |
---|---|---|
70. 爬楼梯 | 完成 | 动态规划(dynamic programming) |
71. 简化存储路径 | 完成 | 遇到需要去掉一些重复以及特性规律的字符时可以考虑使用栈 |
73. 矩阵置零 | 完成 | 为了避免真正的0在置0时候被淹没,先用一个常量modify代替,最后再统一变成0 |
75. 颜色分类 | 完成 | 考察排序方法,可以看成荷兰国旗问题,一次遍历,复杂度为O(N)(三指针,一个用来遍历,另外两个用来定位0和2的最新位置) |
77. 组合 | 完成 | 回溯(su)算法 |
78. 子集 | 完成 | 依旧是回溯(su)算法 |
79. 单词搜索 | 完成 | 在二维平面上使用回溯法,创建boolean[][] flag来记录踩过的点,回溯的时候要记得释放 |
知识积累:
- Deque:双端队列,既可以当栈也可以当队列使用(栈:添加弹出数据都在first,队列:添加在last,弹出在first)
Java中实际上提供了java.util.Stack来实现栈结构,但官方目前已不推荐使用,而是使用java.util.Deque双端队列来实现队列与栈的各种需求.如下图所示java.util.Deque的实现子类有java.util.LinkedList和java.util.ArrayDeque.顾名思义前者是基于链表,后者基于数据实现的双端队列.
方法区:
addFirst()
offerFirst()
addLast()
offerLast()
removeFirst()
pollFirst()
getFirst()
peekFirst()