# 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 ):
# write code here
#辅助数组
# 主要通过辅助数组实现链表的排序
# 1、遍历链表并将链表结点存储到数组 tmp 中
# 2、通过对 tmp 进行排序,实现链表结点的排序
# 3、构建新链表结点 result,遍历数组 tmp ,拼接新的返回链表
tmp = []
tmp.append(head.val)
# 遍历链表存储到数组中
while head.next:
head = head.next
tmp.append(head.val)
# 数组排序
tmp.sort()
# 重新构造新链表结点
res = ListNode(-1)
stack = res
# 遍历数组,将数组中元素添加到新的链表中
for i in tmp:
tt = ListNode(i)
stack.next = tt
stack = stack.next
return res.next
# 时间复杂度O(NlogN):N表示链表结点数量,遍历链表O(N),数组排序(NlogN),遍历数组O(N)
# 空间复杂度O(N):使用额外数组占用空间O(N)
# #方案1:未调试成功,不知是否可行,理解上,将链表数据提出转成列表,然后利用sorted排序,再转成链表数据
# if head == None:
# return head
# else:
# stack1 = []
# stack = []
# res = ListNode(0)
# dummy = res
# while head:
# stack1.append(head.val)
# head = head.next
# stack = sorted(stack1)
# for i in stack:
# dummy = ListNode(i)
# dummy = dummy.next
# return res.next
牛课力扣---NC70 单链表的排序
最新推荐文章于 2024-09-10 16:57:42 发布