给定一个节点数为n的无序单链表,对其按升序排序。
数据范围:0<𝑛≤100000,保证节点权值在[−10^9,10^9]之内。
要求:空间复杂度 𝑂(𝑛),时间复杂度 𝑂(𝑛𝑙𝑜𝑔𝑛)
public class Solution {
public ListNode sortInList (ListNode head) {
if(head == null || head.next == null)
return head;
ArrayList<Integer> list = new ArrayList<>();
ListNode tmp = head;
while(tmp != null){
list.add(tmp.val);
tmp = tmp.next;
}
list.sort((a,b)->{return a-b;});
ListNode temp = head;
int i = 0;
while(temp != null){
temp.val = list.get(i++);
temp = temp.next;
}
return head;
}
}