题目
给你链表的头结点
head
,请将其按 升序 排列并返回 排序后的链表 。
解题思路
- 先将链表各节点之间的联系断开然后再进行排序;
- 通过List存放节点,对List按照节点的值进行排序;
- 遍历List重新建立联系。
代码展示
class Solution {public ListNode sortList(ListNode head) {if(head == null){return null;}List<ListNode> list = new ArrayList<>();while (head != null){//创建临时节点存放下一个节点ListNode node = head.next;//将当前节点与下一个节点断开连接,再存放到List中,避免产生循环head.next = null;list.add(head);head = node;}//对list进行升序排序list.sort(new Comparator<ListNode>() {@Overridepublic int compare(ListNode o1, ListNode o2) {return o1.val - o2.val;}});for (int i = 1; i < list.size(); i++){list.get(i - 1).next = list.get(i);}return list.get(0);}
}