滑動窗口(ok)
題號:3、209、76
- 定義好窗口的左邊界
left
和右邊界right
- 一般是只需要遍歷
right
,滿足條件后調整left
鏈表
題號:206、92、146、25、21
- 反轉鏈表主要是設置好
pre
(初始為null
)和cur
(初始為第一個需要反轉的元素),依次往后遍歷 - 偽頭部節點
ListNode dummy = new ListNode(0, head)
- LRU緩存使用雙向鏈表和哈希表,注意提前聲明
Node
的數據結構,put操作可能會修改value值。 - K 個一組翻轉鏈表重點是確定好
pre
、start
、end
和endNext
- 合并兩個鏈表的時候,直接連接即可,無需
new
新節點
快速排序
題號:215、4
- 快速排序的核心思想是分治,選擇一個哨兵,將序列分為大于哨兵的序列和小于哨兵的序列,再分別進行快速排序
- 因為是分別進行快速排序,所以一開始就不要把上下界設置死
- 快速排序
雙指針
題號:15、
-
在
List<List<Integer>>
中添加元素:List<Integer> list = Arrays.asList(num, nums[left], nums[right]); ans.add(list);
一維動態規劃
題號:53
多維動態規劃
題號:5、
- 回文串:如果
abcba
是回文串,那么bcb
也是回文串,c
也是回文串,化解為子問題。
堆排序
題號:4
- 堆排序中,每次交換完之后,要從第
0
個位置向下調整,而不是從i
開始調整。 - 堆排序
數組
題號:1
1.
二叉樹
題號:102
- 層序遍歷注意Queue的使用
二分查找
題號:33
- 注意
l
和r
的遍歷
DFS
題號:200
- 二叉樹和圖的DFS:(1)定義退出條件(二叉樹是節點為null,圖為行列超邊界);(2)遞歸dfs(二叉樹是遞歸自己的左右子節點,圖是遞歸周圍滿足條件的點);(3)去重(設置visited或者用其他值標記)