题目描述
合并两个排序的链表
样例
算法1
(直接递归)
C++ 代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* merge(ListNode* l1, ListNode* l2) {
if(l1 == NULL) return l2; // 特判
if(l2 == NULL) return l1;
if(l1 -> val <= l2 -> val){ // l1 的首节点 大小 <= l2 的,让 l1的下一个节点和 l2首节点 再 nerge
l1 -> next = merge(l1 -> next, l2); // ,结果就是排好序的链表。
return l1;
}
else {
l2 -> next = merge(l2 -> next, l1); // 否则 类似上面步骤。
return l2;
}
}
};