题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/
题解
递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) return l1; if (l1->val <= l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } } };
|
时间复杂度 O(m + n),空间复杂度 O(m + n),其中 m, n 分别为两个链表的长度
迭代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* head = new ListNode(-1); ListNode* p = head; while (l1 && l2) { if (l1->val <= l2->val) { p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } p->next = l1 ? l1 : l2; return head->next; } };
|
时间复杂度 O(m + n),空间复杂度 O(1),其中 m, n 分别为两个链表的长度