思路:
l1 或 l2若有一者为空则返回非空链表
若都非空,则判断 l1 和 l2 的val,val小的将其 next 递归添加到结果的节点
递归终止条件:l1 或 l2 有一为空
代码:
/** * 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* l1, ListNode* l2) { if (l1 ==NULL) //如果一条为空,则返回另一条 { return l2; } if (l2 == NULL) { return l1; } if (l1->val < l2->val) //值较小的,将后面的添加到值较小的后面 { l1->next = mergeTwoLists(l2,l1->next); return l1; } else{ l2->next = mergeTwoLists(l2->next,l1); return l2; } } };