题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
提示:
两个链表的节点数目范围是 [0, 50]<br /> -100 <= Node.val <= 100<br /> l1 和 l2 均按 非递减顺序 排列
题解
标答
class Solution {public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if (l1 == nullptr) {return l2;} else if (l2 == nullptr) {return l1;} else if (l1->val < l2->val) {l1->next = mergeTwoLists(l1->next, l2);return l1;} else {l2->next = mergeTwoLists(l1, l2->next);return l2;}}};
我的
class Solution {public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode *result = nullptr;if (list1 == nullptr&&list2 == nullptr)return result;//都为空if (list1 == nullptr) return list2;//一为空if (list2 == nullptr) return list1;//二为空ListNode *p1 = list1;ListNode *p2 = list2;ListNode *go = nullptr;ListNode *temp = nullptr;while (p1 != nullptr || p2 != nullptr) {if (p1 == nullptr) {temp = p2;go->next = temp;go = go->next;p2 = p2->next; continue;}else if(p2 == nullptr) {temp = p1;go->next = temp;go = go->next;p1 = p1->next; continue;}if (p1->val <= p2->val) {if (go == nullptr) {go = p1;result = go;p1 = p1->next;continue;}else {temp = p1;go->next = temp;go = go->next;p1 = p1->next;}}else {if (go == nullptr) {go = p2;result = go;p2 = p2->next;continue;}else {temp = p2;go->next = temp;go = go->next;p2 = p2->next;}}}go->next = nullptr;return result;}};
