#链表
237. 删除链表中的节点
之前是给 val ,因此删除节点需要找到待删除节点的前一个节点,但是这里直接给节点就不用这样了。这本质上还是将待删除的节点的值改为下一个节点的值,然后指向下一个节点的指向
24. 两两交换链表中的节点
由于 second 比 first 快,哪怕是进入循环内,也要时刻保证在用 second 多级指向的时候(多次next),不再某个以 NULL 节点去 next,这在循环链表的时候务必谨记的
203. 移除链表元素
删除节点需要之前它的前一个节点。如果有可能删除头结点,那就需要虚拟头结点了
160. 相交链表
交互点指的是比较两个节点的地址是否相等,而不是元素相等
82.删除排序链表中的重复元素 II
当我们的链表中删除某个节点,如果这个节点可能包含头结点,那么务必使用虚拟头结点,因为删除节点需要拥有待删除节点的前一个节点才能进行删除
83.删除排序链表中的重复元素
这道题主要强调 while 循环,由于 fast 检测是否为空在最外层 while 中检测,但它只能保证当前这次循环不为空,所以 fast 如果进入下一个 while 循环(代码中内存 while 循环),记得要继续检测是否为空,不然出现未定义错误
206.反转链表
反转链表需要用到三个指针,left 和 right 指针用于反转链表,而 node 指针用来保存还未进行反转的链表
19.删除链表的倒数第 N 个结点
只要明白链表的特性,以及删除的特点就很容易想到该怎么处理这道题,不会想复杂
2.两数相加
关于进位的处理,这并不难,只需要用一个标记位 note 来标识是否有进位,还有要记得正确更新 note 的情况
143.重排链表
这道题只要能够把题目看明白,即它究竟是如何重排,逻辑上理清楚并不难
12