题解 | #链表排序#
链表排序
http://www.nowcoder.com/practice/d75c232a0405427098a8d1627930bea6
1、利用优先队列
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode sortList (ListNode head) { // write code here if (head == null || head.next == null) return head; Queue<ListNode> queue = new PriorityQueue<>((a, b) -> a.val - b.val); ListNode cur = head; while (cur != null) { queue.offer(cur); cur = cur.next; } ListNode dummy = new ListNode(0); cur = dummy; while (!queue.isEmpty()) { cur.next = queue.poll(); cur = cur.next; } cur.next = null; return dummy.next; } }