题目描述:
给定一个单链表 head
,将其按升序排序并返回排序后的链表。
- 输入条件: 链表长度不固定(可为空)。
- 需要在
O(n log n)
时间复杂度和O(1)
空间复杂度下完成 原地排序(特别限制)。
题解与思路分析
排序链表的经典解法通常围绕归并排序,因为归并排序天然适合链表场景,具有以下特点:
- 链表无法随机访问: 链表适合用归并排序,而不适用快排(链表快排虽然实现复杂,但可以尝试)。
- 时间复杂度要求
O(n log n)
:
归并排序在时间复杂度上满足要求;另一种选择是基于堆的优先队列排序。
以下是几种常见解法:
解法 1:归并排序(递归实现,分治法)
<