链表相关算法(python)

链表相关算法(python)

目录

链表结构定义

链表反转

题目:https://leetcode-cn.com/problems/reverse-linked-list/

  1. 解法一

  2. 解法二

 

有序链表合并

https://leetcode-cn.com/problems/merge-two-sorted-lists/

同时遍历两个链表,比较大小,把小的结点取下来到新的串。

 

带环链表问题

  1. 如何检测是否带环

    快指针走2步,慢指针走1步,如果有环,则肯定会相遇。

  2. 求环的节点数

    从相遇点开始走,并计数,再次到达相遇点则计数结束。

  3. 求环入口

    在已知环的结点数后,其中一个指针先走n步,然后一起走,相遇点即为入口点。

 

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

解决方法: 快慢指针

 

求链表的中间节点

https://leetcode-cn.com/problems/middle-of-the-linked-list/

解题思路: 快慢指针

旋转链表

https://leetcode-cn.com/problems/rotate-list/

解题思路:

  1. 因为k可能大于链表长度,所以先求链表长度size, 在用k对size取余。
  2. 把后k % size个节点,接到链首。