合并两个有序的列表(递归非递归双解法)
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
递归版本思路:
- 终止条件:每次判断是否一个链表是空,如果有空,则返回另一个链表头即可
- 如果两个链表都是非空,则找到值更小的链表项,将其加入结果。然后很容易发现问题现在变为了形式一致但规模缩小的问题
(递归版本非常简洁,实现非常容易)
#include<iostream>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
ListNode* Merge