1,问题简述
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
2,示例
示例 1:
输入: 4->2->1->3
输出: 1->2->3->4
示例 2:
输入: -1->5->3->4->0
输出: -1->0->3->4->5
3,题解思路
链表操作
4,题解程序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortListTest2 {
public static void main(String[] args) {
ListNode l1 = new ListNode(4);
ListNode l2 = new ListNode(2);
ListNode l3 = new ListNode(1);
ListNode l4 = new ListNode(3);
l1.next = l2;
l2.next = l3;
l3.next = l4;
ListNode listNode = sortList(l1);
System.out.println("listNode = " + listNode);
}
public static ListNode sortList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
List<Integer> list = new ArrayList<>();
ListNode temp = head;
while (temp != null) {
list.add(temp.val);
temp = temp.next;
}
Collections.sort(list);
ListNode dummyNode = new ListNode(-1);
ListNode tempNode = dummyNode;
for (Integer integer : list) {
tempNode.next = new ListNode(integer);
tempNode = tempNode.next;
}
return dummyNode.next;
}
}
5,题解程序图片版
6,总结
有的时候自己写完整道题之后,确实不知道给你们说什么了,我觉得目前我输出的内容都是常规思路题,所以你懂吧,看懂代码的可以自己单独写写就可以了,具体的解题思路真的不知道怎么描述了。