链表排序
节点类1
2
3
4class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
插入排序
1 | class Solution(object): |
选择排序
1 | class Solution(object): |
冒泡排序
1 | class Solution(object): |
快速排序
1 | class Solution(object): |
LeetCode23 合并K个有序链表
1 | # Definition for singly-linked list. |
LeetCode82 删除排序链表中的重复元素
类似与集合操作
1 | class Solution: |
LeetCode83 删除排序链表中的重复元素II
只要有重复的,重复的都要删除,不保留
1 | class Solution: |
LeetCode138. 复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。
要求返回这个链表的深度拷贝。
分三步进行:
- 生成每个节点的复制,并将其插入后面
- 再次遍历新的链表,若当前节点有随机指针,那么复制节点的随机指针为当前节点随机指针指向节点的下一个节点
- 断开
1 | # class RandomListNode(object): |
LeetCode141. 环形链表
给定一个链表,判断链表中是否有环。
快慢指针
1 | class Solution(object): |
LeetCode142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
1 | class Solution(object): |