前言
合并两个有序链表(递归)
力扣题目链接
思路(子问题)
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结点跟较大的结点拼在一起。
文章到这结束啦,感谢阅读~
如果你觉得文章写的还不错,记得点赞收藏评论三连~ ❤