算法练习Day4 | 链表

68 阅读1分钟

题目

  • 24.两两交换链表中的节点
  • 19.删除链表的倒数第N个节点
  • 160.链表相交
  • 142.环形链表II

24

  • 画图会清晰很多
  • 设置dummy head

19

  • Two pointers, slow和fast
  • 删除链表中的一个元素, 记得用dummy head

160

  • 一开始思路有错误, 想着先遍历到结尾再反推, 实际完全不可行
  • 让两个list到达离末尾还有一样距离后再开始比较

142

建议死记硬背

判断链表是否有环

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。

如何找到这个环的入口

从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点。