题解 | #合并两个排序的链表#

合并两个排序的链表

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

public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        //特殊值处理,list1为空,返回链表2的头节点
        if(list1 == null){
            return list2;
        }
        //特殊值处理,list2为空,返回链表1的头节点
        if(list2 == null){
            return list1;
        }
        ListNode head = null;//合并后的链表头节点
        //初始化头节点
        if(list1.val <= list2.val){
            head = list1;
            list1 = list1.next;
        }else {
            head = list2;
            list2 = list2.next;
        }
        ListNode head0 = head;//初始化合并后的链表的尾节点
        while (list1 != null && list2 != null){//当链表1和链表2都不为空时,比较两个链表的最小值
            if(list1.val <= list2.val){//链表1的最小值小于链表2的最小值
                head0.next = list1;  //合并后的链表的尾节点指向链表1的头节点
                head0 = head0.next;  //更新合并后的链表的尾节点
                list1 = list1.next;  //更新链表1的头节点
            }else {
                head0.next = list2;  //合并后的链表的尾节点指向链表2的头节点
                head0 = head0.next;  //更新合并后的链表的尾节点
                list2 = list2.next;  //更新链表2的头节点
            }
        }
        if(list1!=null){//当链表1不为空时,合并后的链表的尾节点指向链表1的头节点
            head0.next = list1;
        }
        if(list2!=null){//当链链表2不为空时,合并后的链表的尾节点指向链表2的头节点
            head0.next = list2;
        }
        return head;//返回合并后的链表的头节点
    }
}
全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
05-30 18:54
武汉商学院 Java
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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