LeetCode 148:Sort List

Posted 一只菜鸡的奋斗史

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 148:Sort List相关的知识,希望对你有一定的参考价值。

题意描述

对一个链表进行排序

测试用例

Input: 4->2->1->3

Output: 1->2->3->4

Input: -1->5->3->4->0

Output: -1->0->3->4->5

解题思路

一、思路一

  1. 将链表进行拆分,最终向下拆分成一个节点为单位的链表
  2. 比较节点的val大小,重新进行拼接
  3. 每次拼接完成,返回新链表的头节点,进行下一轮拼接
    public ListNode sortList(ListNode head) {
            if(head == null || head.next == null) return head;
            ListNode slow = head,fast = head,pre = null;
        	//将链表分为两部分
            while(fast != null && fast.next != null){
                pre = slow;
                slow = slow.next;
                fast = fast.next.next;
            }
            pre.next = null;
            ListNode l1 = sortList(head);	//左边向下拆分
            ListNode l2 = sortList(slow);	//右边向下拆分
            return merge(l1, l2);	//拼接节点
        }
        private ListNode merge(ListNode node1,ListNode node2){
            ListNode node = new ListNode(-1);
            ListNode head = node;
            while(node1 != null && node2 != null){
                if(node1.val < node2.val){
                    head.next = node1;
                    node1 = node1.next;
                }else{
                    head.next = node2;
                    node2 = node2.next;
                }
                head = head.next;
            }
            if(node1 != null){
                head.next = node1;
            }
            if(node2 != null){
                head.next = node2;
            }
            return node.next;
        }

以上是关于LeetCode 148:Sort List的主要内容,如果未能解决你的问题,请参考以下文章

[Lintcode]98. Sort List/[Leetcode]148. Sort List

#Leetcode# 148. Sort List

leetcode148. Sort List

Leetcode148-Sort_List

leetcode148. Sort List

LeetCode-148-Sort List