【算法学习】合并两个有序链表(递归)

专栏文章:算法学习
作者主页:格乐斯

前言

合并两个有序链表(递归)
力扣题目链接

思路(子问题)

L1和L2结点值比大小,较小的结点的next跟较大的结点拼在一起。

函数头

void merge(L1,L2)
//L1,L2链表拼在一起

函数体

if(L1.val<=L2.val)

L1.next=merge(L1.next,L2)

else

L2.next=merge(L1,L2.next)

递归出口

L1(L2)结点为空,返回L2(L1)结点

代码编写

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
            if(list1==null) return list2;
            if(list2==null) return list1;
            
            if(list1.val<=list2.val){
                list1.next=mergeTwoLists(list1.next,list2);
                return list1;
            }
            else{
                list2.next=mergeTwoLists(list1,list2.next);
                return list2;
            }
    }
}

总结

用递归方法合并有序链表的核心思路:
L1和L2结点值比大小,较小的结点的next结点跟较大的结点拼在一起。


文章到这结束啦,感谢阅读~

如果你觉得文章写的还不错,记得点赞收藏评论三连~ ❤

img

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值