知识点

链表,排序

解题思路

将全部的节点放到list中,根据val按照从小到大排序,排序完之后记得把最后节点的next指向null,不然可能会出现递归的指向。

Java题解

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode sortList (ListNode head) {
        // write code here
        List<ListNode> list = new ArrayList<>();
        while(head != null) {
            list.add(head);
            head = head.next;
        }
        list.sort((o1, o2) -> o1.val - o2.val);
        ListNode ans = new ListNode(0);
        ListNode curr = ans;
        for (ListNode listNode : list) {
            curr.next = listNode;
            curr = curr.next;
        }
        curr.next = null;
        return ans.next;
    }
}