0
点赞
收藏
分享

微信扫一扫

29. 剑指 Offer 25. 合并两个排序的链表

上古神龙 2022-03-11 阅读 32

题目

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

思路

使用了递归,但是边界条件没有处理好!

答案代码

创建一个新的链表,在一个链表节点添加结束之前,进行循环;最后肯定会余下一个链表没有添加结束

这里随便创建一个新节点

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        //剑指Offer中用了 递归插入的方式,失败了
        ListNode temp = new ListNode(0),cur = temp;
        //两个都不空时,进行插入操作;
        //其实理解为:创建一个新链表,挨个把l1和l2的节点按大小连接上去,一个新链表
        while(list1 != null && list2 != null){
            if(list1.val <= list2.val){
                cur.next = list1;
                list1 = list1.next;
            }else{
                cur.next = list2;
                list2 = list2.next;
            }
            cur = cur.next;
        }
        //循环结束后,会出现一个不等于0的情况
        cur .next = (list1 != null) ? list1 : list2;
        return temp.next;
    }
}
举报

相关推荐

0 条评论