码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 148:Sort List

时间:2020-05-13 23:44:10      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:class   大小   amp   etc   new   head   merge   turn   code   

题意描述

对一个链表进行排序

测试用例

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

标签:class   大小   amp   etc   new   head   merge   turn   code   

原文地址:https://www.cnblogs.com/le-le/p/12885384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!