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) 循环