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

合并两个排序的链表

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

public ListNode Merge(ListNode list1,ListNode list2) {
        //结果集
        ListNode head = null;
        ListNode result = null;
        //节点校验
        if(list1 == null && list2 == null) return null;
        if(list2 == null){
            return list1;
        }else if(list1 == null){
            return list2;
        }
        //取两个链表的第一元素
        while(list1 != null || list2 != null){
            if(head == null){
                //第一次循环
                if(list1.val >= list2.val){
                    head = list2;
                    list2 = list2.next;
                }else{
                    head = list1;
                    list1 = list1.next;
                }
                result = head;
                continue;
            }
            //当list1为空时
            if(list1 == null){
                head.next = list2;
                list2 = list2.next;
                head = head.next;
                continue;
            }
            //当list2为空时
            if(list2 == null){
                head.next = list1;
                list1 = list1.next;
                head = head.next;
                continue;
            }
            //当两者都不为空时
            if(list1.val >= list2.val){
                head.next = list2;
                list2 = list2.next;
            }else{
                head.next = list1;
                list1 = list1.next;
            }
            head = head.next;
        }
        return result;
    }

分多钟情况进行判断
1、两个链表都为空
2、两个链表一个空一个不空
3、两个链表连都不为空
前两种情况都相对来说比较简单,针对第三种情况又可以进行详细分析
1、第一次进入循环时保留结果值
2、当两个链表都还有数值时的如何操作
3、当两个链表中的任意一个为空的如何操作

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务