题解 | #单链表的排序#
单链表的排序
https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ function sortInList( head ) { // write code here if (head.next === null) { return head } let slow = head let fast = head let prev = null while (fast && fast.next) { prev = slow slow = slow.next fast = fast.next.next } prev.next = null let left = sortInList(head) let right = sortInList(slow) return mergeNode(left,right) } function mergeNode( head1 , head2 ) { let p = new ListNode(0) let p1 = p while (head1 && head2) { if(head1.val <= head2.val) { p.next = head1 head1 = head1.next } else { p.next = head2 head2 = head2.next } p = p.next } if (head1) { p.next = head1 } if (head2) { p.next = head2 } return p1.next } module.exports = { sortInList : sortInList };