难度中等1025收藏分享切换为英文接收动态反馈
给你链表的头结点 head
,请将其按 升序 排列并返回 排序后的链表 。
进阶:
- 你可以在
O(n log n)
时间复杂度和常数级空间复杂度下,对链表进行排序吗?
示例 1:
输入:head = [4,2,1,3] 输出:[1,2,3,4]
示例 2:
输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5]
示例 3:
输入:head = [] 输出:[]
提示:
- 链表中节点的数目在范围
[0, 5 * 104]
内 -105 <= Node.val <= 105
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def __init__(self):
self.head = ListNode(None)
def sortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
lst = []
p = head
while p:
lst.append(p.val)
p = p.next
lst.sort()
res = self.head
for i in range(len(lst)-1, -1, -1):
cur_node = ListNode(lst[i])
cur_node.next = self.head.next
self.head.next = cur_node
return res.next