题解 | #单链表的排序#

单链表的排序

https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

public class Solution {
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    public ListNode sortInList (ListNode head) {
        // write code here
        List<ListNode> lists = new ArrayList<>();
        while (head != null) {
            ListNode next = head.next;
            head.next = null;
            lists.add(head);
            head = next;
        }
        while (lists.size() > 1) {
            if (lists.size() % 2 == 0) {
                List<ListNode> cur = new ArrayList<>();
                for (int i = 1 ; i < lists.size() ; i += 2) {
                   cur.add(mergeSort(lists.get(i-1),lists.get(i)));
                }
                lists = cur;
            } else {
                List<ListNode> cur = new ArrayList<>();
                for (int i = 1 ; i < lists.size() - 1; i += 2) {
                   cur.add(mergeSort(lists.get(i-1),lists.get(i)));
                }
                cur.add(lists.get(lists.size() - 1));
                lists = cur;
            }
        }
        return lists.get(0);
    }
    public ListNode mergeSort(ListNode root1,ListNode root2) {
        ListNode vHead = new ListNode(-100);
        ListNode work = vHead;
        work.next = null;
        while (root1 != null && root2 != null) {
            if (root1.val < root2.val) {
                work.next = root1;
                work = work.next;
                root1 = root1.next;
            } else {
                work.next = root2;
                work = work.next;
                root2 = root2.next;
            }
        }
        while (root1 != null) {
            work.next = root1;
            work = work.next;
            root1 = root1.next;
        }
         while (root2 != null) {
            work.next = root2;
            work = work.next;
            root2 = root2.next;
        }
        return vHead.next;
    }
}


// 归并排序的想法

全部评论

相关推荐

点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务