【Leetcode】148. 排序链表(Sort List)

No148. 排序链表

题目

给你链表的头结点 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

思路:

遍历存入进List,然后经过排序后重新按序赋值。

解题代码(Python3)

class Solution:
    def sortList(self, head: ListNode) -> ListNode:
        #假设是对值排序 放到List里面排序之后再放入
        p = head
        result = []
        while p:
            result.append(p.val)
            p = p.next
        p = head
        result.sort()
        i = 0
        while p:
            p.val = result[i]
            i += 1
            p = p.next
        return head

复杂度分析:

  • 时间复杂度O(nlogn)
  • 空间复杂度O(n)

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113760139