148. Sort List
2026/1/12小于 1 分钟约 296 字
148. Sort List
难度: Medium
题目描述
Given the head of a linked list, return the list after sorting it in ascending order.
Example 1:

Input: head = [4,2,1,3] Output: [1,2,3,4]
Example 2:

Input: head = [-1,5,3,4,0] Output: [-1,0,3,4,5]
Example 3:
Input: head = [] Output: []
Constraints:
- The number of nodes in the list is in the range
[0, 5 * 104]. -105 <= Node.val <= 105
Follow up: Can you sort the linked list in O(n logn) time and O(1) memory (i.e. constant space)?
解题思路
代码实现
解决方案
java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode sortList(ListNode head) {
List<Integer> list = new ArrayList<>();
ListNode node = head;
while (node != null) {
list.add(node.val);
node = node.next;
}
list.sort(null);
ListNode res = new ListNode();
ListNode resP = res;
for (Integer d : list) {
ListNode n = new ListNode(d);
resP.next = n;
resP = resP.next;
}
return res.next;
}
}