【作业8】链表专题:用递归合并排序链表
对应课程链接:拿捏算法面试:合并两个有序链表
视频讲解时,我们用的是非递归,这里要求大家也会用递归出来哈,作业要求:
1、给出 21. 合并两个有序链表 运行通过的代码。
2、要求采用递归的解法。
PS:如果你不知道怎么打卡,可以看这里:打卡细则
对应课程链接:拿捏算法面试:合并两个有序链表
视频讲解时,我们用的是非递归,这里要求大家也会用递归出来哈,作业要求:
1、给出 21. 合并两个有序链表 运行通过的代码。
2、要求采用递归的解法。
PS:如果你不知道怎么打卡,可以看这里:打卡细则
共以下 17 个回答
打卡
“`
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(list1 == null){
return list2;
}else 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; }
递归
打卡
时间复杂度:O(m + n)
空间复杂度:O(m + n)
递归
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(list1null){
return list2;
}
if(list2null){
return list1;
}
//相当于拿list2当主链表
if(list1.val>list2.val){
list2.next = mergeTwoLists(list1,list2.next);
return list2;
}
//相当于拿list1当主链表
else{
list1.next = mergeTwoLists(list1.next,list2);
return list1;
}
}
}
时间:$O(m + n)$
空间:$O(1)$
时间O(n)
打卡
时间复杂度O(m+n),空间复杂度O(m+n)