当前位置: 首页> 房产> 建筑 > leetcode-148. 排序链表

leetcode-148. 排序链表

时间:2025/7/12 7:00:46来源:https://blog.csdn.net/m0_38098373/article/details/140702181 浏览次数:0次

题目描述

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

示例 1:

输入:head = [4,2,1,3]
输出:[1,2,3,4]

示例 2:

输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]

示例 3:

输入:head = []
输出:[]

思路

使用快慢指针完成+合并两个有序链表完成归并排序

# Definition for singly-linked list.
class ListNode(object):def __init__(self, val=0, next=None):self.val = valself.next = next
class Solution(object):def sortFunc(self, head, tail):if not head:return headif head.next == tail:head.next = Nonereturn headslow = fast = headwhile fast != tail:slow = slow.nextfast = fast.nextif fast != tail:fast = fast.nextmid = slowreturn self.merge(self.sortFunc(head, mid), self.sortFunc(mid, tail))def merge(self, head1, head2):pre = ListNode(-1)head, head1, head2 = pre, head1, head2while head1 and head2:if head1.val <= head2.val:head.next = head1head1 = head1.nextelse:head.next = head2head2 = head2.nexthead = head.nextif head1:head.next = head1if head2:head.next = head2return pre.nextdef sortList(self, head):""":type head: ListNode:rtype: ListNode"""return self.sortFunc(head, None)if __name__ == '__main__':s = Solution()head = ListNode(1)phead = headdata = [4, 3, 7, 5] for i in data:node = ListNode(i)phead.next = nodephead = phead.nexthead = s.sortList(head)while head:print(head.val),head = head.next
关键字:leetcode-148. 排序链表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: