题目
给定一个节点数为n的无序单链表,对其按升序排序。
数据范围:0 < n \le 1000000<n≤100000,保证节点权值在[-10^9,10^9][−109,109]之内。
要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
示例1
输入:[1,3,2,4,5]
返回值:{1,2,3,4,5}
解题思路
1.遍历单链表,将节点的值依次加入到数组中
2.对数组元素排序
3.将排序后的数组元素依次插入到链表中
题解
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类 the head node
# @return ListNode类
#
class Solution:
def sortInList(self , head: ListNode) -> ListNode:
p = head
l = []
#1.遍历单链表,将节点的值依次加入到数组中
while p:
l.append(p.val)
p = p.next
#2.对数组元素排序
l.sort()
#3.将排序后的数组元素依次插入到链表中
p = head
for i in range(len(l)):
p.val = l[i]
p = p.next
return head