203.移除链表元素

创建一个虚拟头节点


206.反转链表


24. 两两交换链表中的节点

【golang 必备算法】链表篇_力扣


19.删除链表的倒数第N个节点

同样还是用了虚拟节点


面试题 02.07. 链表相交
  • 使用哈希表,将其中一个链表的节点不断添加进去
  • 遍历第二个链表,如果在哈希表中找到了节点,则返回节点的数据值


142.环形链表II

​ 快慢指针,fast 与 slow。它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置,而 fast 指针向后移动两个位置。如果链表中存在环,则fast 指针最终将再次与 slow 指针在环中相遇。

【golang 必备算法】链表篇_反转链表_02

可以看出 (a+b)*2 = a+n(b+c)+b

​ a=c+(n-1)(b+c)

因此,当发现 slow 与 fast 相遇时,我们再额外使用一个指针ptr。起始,它指向链表头部;随后,它和 slow 每次向后移动一个位置。最终,它们会在入环点相遇。