题目:
给你链表的头结点 head
,请将其按 升序 排列并返回 排序后的链表 。
示例 :
输入:head = [4,2,1,3]
输出:[1,2,3,4]
题解:
import java.util.*;
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) {
//边界条件
ListNode tem = head;
if (head == null || head.next == null) {
return head;
}
//排序
List<Integer> list = new ArrayList<>();
while (head != null) {
list.add(head.val);
head = head.next;
}
Collections.sort(list);
int i = 0;
head = tem;
while (head != null) {
head.val = list.get(i);
i++;
head = head.next;
}
return tem;
}
}
public class Main {
public static void main(String[] args) {
ListNode head = new ListNode(5);
ListNode head1 = new ListNode(2);
ListNode head2 = new ListNode(1);
ListNode head3 = new ListNode(3);
ListNode head4 = new ListNode(4);
head.next = head1;
head1.next = head2;
head2.next = head3;
head3.next = head4;
Solution s = new Solution();
ListNode res = s.sortList(head);
while (res != null) {
System.out.print(res.val + "->");
res = res.next;
}
}
}