24. 两两交换链表中的节点
用虚拟头结点,这样会方便很多。
本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。
题目链接/文章讲解/视频讲解: programmercarl.com/0024.%E4%B8…
注意事项
# 必须有pre的下一个和下下个才能交换,否则说明已经交换结束了
while pre.next and pre.next.next:
交换顺序好像没影响?感觉不影响结果,影响速度,不知道为啥
19.删除链表的倒数第N个节点
双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。
题目链接/文章讲解/视频讲解:programmercarl.com/0019.%E5%88…
。。
顺利做出来
160. 链表相交
本题没有视频讲解,大家注意 数值相同,不代表指针相同。
题目链接/文章讲解:programmercarl.com/%E9%9D%A2%E…
解题思路
没想法好懵。。然后看了解说豁然开朗并成功写出来了。但是答案给的快慢指针还没弄懂。
142.环形链表II
算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。
题目链接/文章讲解/视频讲解:programmercarl.com/0142.%E7%8E…
解题思路
刚拿到题完全不会做,然后看了视频讲解懂了,按视频给的伪代码成功写出。 唯一的问题是
while fast and fast.next:
刚开始写成了
while fast and fast.next.next:
这里还有点不太懂。 因为要跳到next.next所以只用保证next不是空就可以?