链表排序 python 力扣148
力扣148 https://leetcode-cn.com/problems/sort-list/
归并排序单向链表 完整解法
# from utils import ListNode, LinkList
from typing import List
class ListNode(object):
def __init__(self, val=None, next=None):
self.val = val
self.next = next
def __repr__(self):
res = ''
p = self.next
res = '' + str(self.val) + '-->'
while p:
tmp = str(p.val)
tmp = tmp + '-->' if p.next else tmp
res += tmp
p = p.next
return res
def LinkList(lst: List) -> ListNode:
if not lst: return None
head = ListNode(lst[0])
p = head
for i in range(1, len(lst)):
p.next = ListNode(lst[i])
p = p.next
return head
def sortList(head: ListNode) -> ListNode:
if not head or not head.next: return head
slow, fast = head, head.next
# find the mid and cut the LinkList
while fast and fast.next:
slow, fast = slow.next, fast.next.next
mid, slow.next = slow.next, None
left, right = sortList(head), sortList(mid)
# merge two sorted LinkList
dummy = ListNode(0)
p = dummy
while left and right:
if left.val < right.val:
p.next, left = left, left.next
else:
p.next, right = right, right.next
p = p.next
p.next = left if left else right
return dummy.next
if __name__ == "__main__":
ins = LinkList([1, 6, 3, 9, 7, 5])
print(ins)
outs = sortList(ins)
print(outs)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2019-01-14 ubuntu18.04忽略笔记本合盖设置方法