链表_leetcode148-链表归并排序

此博客为转载内容,转载自https://www.cnblogs.com/lux-ace/p/10557221.html ,涉及数据结构与算法领域。
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None


class Solution:
def sortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head

mid = self.getMid(head)

l = head
r = mid.next
mid.next =None
return self.merge(self.sortList(l),self.sortList(r))

def getMid(self,head):
if not head :
return head
fast = slow = head

while fast.next and fast.next.next:
slow = fast.next
fast = fast.next.next

return slow


def merge(self,p,q):
dummyHead = ListNode(0)
pre = dummyHead
while p and q:
if p.val < q.val:
pre.next = p
pre = pre.next
p = p .next
else:
pre.next = q
pre = pre.next
q = q.next

if p:
pre.next = p
else:
pre.next = q

return dummyHead.next

转载于:https://www.cnblogs.com/lux-ace/p/10557221.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值