题解:合并两个有序链表(easy)——递归求解
目录
- 1.题目
- 2.题解
- 3.参考代码
- 4.总结
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