1. (简单)1.相交链表,最后 while 记错了
  2. (次简单)(简单)2._反转链表,经典,第二次想到了递归而不是迭代,建议多刷,好像和另一个很像
  3. (简单)3.回文链表,就是第一题第二题结合,推荐双指针
  4. (简单)4.环形链表5.环形链表2.0,一个快慢指针第二 set,也用到了快慢指针,这里不用 next。next 直接 next 就行
  5. (简单)(次简单)6._合并链表递归 merge,选出排头兵,排头兵后是递归解决
  6. (次简单)7.双链表相加,第一次出现哨兵节点与尾节点记录
  7. (次简单)(简单)8.删除链表的倒数第N个节点,哨兵节点与快指针先行 (之所以需要哨兵节点,是因为有可能删第一个节点)
  8. (简单!)9._两两交换,与递归版反转链表好像,一起记忆
  9. (次简单)10.k个链表反转,注意 pre 和 end 的逻辑
  10. (简单)11.深拷贝(next和random),hashMap 解决,不用 new
  11. (medium)(次简单)(简单)12.链表排序,快慢指针找中点(也可以用数数后切割 length/2)+递归+merge(哨兵节点+尾指针对比大小拼接返回)(最特殊,只有这道题快慢指针起点不同,且 mid 还得 slow.next。且最后合并的一条链表而不是两数相加的那种值)1(找的”中点“是偏左的) - 递归结束条件。两个节点时,fast 先走一步
  12. (次简单)(次简单)13.合并 K 个升序链表6._合并链表类似,只不过换成了数组而非链表,注意递归结束条件,需要辅助函数divide,控制链表数组具体的某条链表
  13. (hard)(medium)14.LRU,1.指定头尾节点与前后指针,2.数据结构,3,初始化:头尾哨兵相连。就是麻烦点
  • 删除和反转的需要哨兵节点,两数相加也需要哨兵节点方便返回,链表排序和合并 k 也需要哨兵