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

简介: 【算法】合并两个有序链表(easy)——递归算法

题解:合并两个有序链表(easy)——递归求解

1.题目

题目链接:LINK

2.题解

本题有两种解法,

本篇博客讲用递归如何去处理。

3.参考代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) 
    {
        //递归方法
        ListNode* head = dfs(list1,list2);
        return head;
    }
    ListNode* dfs(ListNode* list1, ListNode* list2)
    {
        if(list1 == nullptr) return list2;
        if(list2 == nullptr) return list1;
        if(list1->val < list2->val) {list1->next = dfs(list1 -> next,list2);return list1;}
        else {list2->next = dfs(list1, list2->next);return list2;}
    }
};

4.总结

我们这道题既可以用循环去做,也可以用递归去做。

相对于用循环去处理本题,用递归更加合适方便。

哪种题适合用循环去处理,哪种题适合用递归去处理,请参见下面链接:

【算法】递归总结:循环与递归的区别?递归与深搜的关系?


EOF

相关文章
|
2月前
|
Python
【Leetcode刷题Python】21. 合并两个有序链表
介绍了几种不同的方法来合并多个已排序的链表,包括暴力求解、使用小顶堆以及分而治之策略。
35 2
|
2月前
|
算法
LeetCode第21题合并两个有序链表
该文章介绍了 LeetCode 第 21 题合并两个有序链表的解法,通过创建新链表,依次比较两个链表的头节点值,将较小的值插入新链表,直至其中一个链表遍历完,再将另一个链表剩余部分接到新链表后面,实现合并。
LeetCode第21题合并两个有序链表
|
3月前
【数据结构OJ题】合并两个有序链表
力扣题目——合并两个有序链表
36 8
【数据结构OJ题】合并两个有序链表
|
2月前
|
算法
【数据结构与算法】共享双向链表
【数据结构与算法】共享双向链表
14 0
|
2月前
|
算法
【数据结构与算法】双向链表
【数据结构与算法】双向链表
13 0
|
2月前
|
算法
【数据结构与算法】循环链表
【数据结构与算法】循环链表
15 0
|
2月前
|
存储 算法
【数据结构与算法】链表
【数据结构与算法】链表
19 0
|
2月前
|
算法
【C算法】链表算法
【C算法】链表算法
|
2月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
46 0
|
2月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
21 0
下一篇
无影云桌面