题目 思路 备注
    删除链表中的节点 直接修改当前节点的val值和next指向
    删除链表中倒数第N个节点 同向快慢双指针
    反转链表 原地变换指针 二个节点(pre, cur),四句代码(保存next,cur指向pre,更新pre, 更新cur)
    K个一组反转链表 与反转链表思路类似, 只不过在翻转完k个节点后,要加一个递归继续处理后续的链表节点:
    - 先将前k个翻转后,再递归的将后边n-k个处理掉即可。(注意检查不足k个时不用翻转)
    image.png
    合并两个有序链表 顺序迭代&比较即可
    回文链表 反转一半链表、或进栈一半链表
    环形链表 同向快慢双指针,指针相遇时表明有环
    两数相加 两链表对应节点相加即可。注意判空、记录进位等
    奇偶链表 声明两个新链表分别链接奇偶节点,最后链接到一起即可
    相交链表 求交点,两个链表交叉迭代,直到遇到相等节点即可。(原理: m+n = n+m)
    合并K个排序链表 分治+递归:
    1. 把k个链表首尾两两合并,变成k/2个链表,依次递归
    1. 子问题:合并2个有序链表
    image.png
    排序链表 归并排序法,通过快慢指针找到链表中点,把链表分为:[head, mid) 与[mid, tail)两个部分, 然后将这两个部分进行合并即可,问题转化为:合并2个有序链表 image.png
    复制带随机指针的链表 用一个HashMap保存的映射关系,则可以通过此map为newNode找到其next指针及random指针所指的节点 image.png