题解 | #单链表的排序#

单链表的排序

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    public ListNode sortInList (ListNode head) {
        // write code here
        List<ListNode> list=new ArrayList<>();
        ListNode p=head;
        while (p!=null){
            ListNode temp=p;
            p=p.next;
            temp.next=null;
            list.add(temp);
        }
        return diviMerge(list, 0, list.size()-1);
    }
    public ListNode diviMerge(List<ListNode> list, int left, int right){
        if(left>right){
            return null;
        }
        if(left==right){
            return list.get(left);
        }
        int mid=(left+right)/2;
        return merge(diviMerge(list,left,mid), diviMerge(list,mid+1,right));
    }
    public ListNode merge(ListNode head1, ListNode head2){
        ListNode dummyNode=new ListNode(-1);
        ListNode p=dummyNode;
        while(head1!=null&&head2!=null){
            if(head1.val<head2.val){
                p.next=head1;
                head1=head1.next;
            }else {
                p.next=head2;
                head2=head2.next;
            }
            p=p.next;
            p.next=null;
        }
        if(head1!=null){
            p.next=head1;
        }
        if(head2!=null){
            p.next=head2;
        }
        return dummyNode.next;
    }
}
全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务