146. LRU缓存机制:双链表 + 哈希表
25. K 个一组翻转链表:迭代翻转 i ... i+k
结点,递归连接多个翻转后的子链表
3. 无重复字符的最长子串:滑动窗口
215. 数组中的第K个最大元素:利用快排 partition 过程
103. 二叉树的锯齿形层序遍历:前序遍历 + 递归
206. 反转链表:新建链表 + for 循环
15. 三数之和:通过 twoSum 扩展
121. 买卖股票的最佳时机:动态规划 DP 两个状态 哪一天、是否持有股票 dp[i][0 or 1]
33. 搜索旋转排序数组: 二分法寻找有序序列
42. 接雨水:左右双指针,容量取决于最短板
236. 二叉树的最近公共祖先:递归+后序遍历 通过左右子树返回结果判断 p q 所处位置
23. 合并K个排序链表:分而治之,最终将问题归为合并两个链表
160. 相交链表:构造两条长度相同的链表 A+B B+A
143. 重排链表:取中点 对后半段 reverse 再拼接前后段
199. 二叉树的右视图:层序遍历元素,取每层最右
31. 下一个排列:较小数下标尽量靠右,较大数尽可能小,交换后将较大数右边的数按升序重新排列
200. 岛屿数量:递归遍历岛屿四周并标记已访问陆地,如果遇到未访问过陆地则为新岛屿
54. 螺旋矩阵 用 l r t b
四个变量分别表示四条边界,用边界是否相交判断旋转方向的变化
92. 反转链表 II 找到左边界用头插法循环控制链表逆序
300. 最长上升子序列:动态规划 + O(N^2) 循环