day 4 第二章 链表

58 阅读1分钟

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不是空就可以?