Merge Two Sorted Lists--LeetCode
2017-09-21 19:04
375 查看
1.题目
Merge Two Sorted ListsMerge two sorted linked lists and return it as a new list.
The new list should be made by splicing together the nodes of the first two lists.
2.题意
不开辟额外空间,合并两条升序链表3.分析
类似于Merge Sorted Array1)迭代版
比较两链表中的元素值,较小值插入到新链表
由于两链表的长度可能不同,所以最终可能会有一条链表先遍历到尾结点
则另一条链表的剩余部分直接插入新链表的末尾
注意不要遗漏l1 = l1->next; l2 = l2->next; p = p->next;
2)递归版
当其中一个链表为空,就返回另一个。
比较两个节点值大小
如果l1的小,那么对于l1的下一节点和l2调用递归函数,将返回值赋值给l1->next,然后返回l1;
否则,对l2的下一节点和l1调用递归函数,将返回值赋值给l2->next,然后返回l2
注意mergeTwoLists(l1->next, l2);与mergeTwoLists(l1, l2->next);不要写反了
4.代码
//Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };
1)迭代版
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == nullptr) return l2; if(l2 == nullptr) return l1; ListNode dummy(-1); ListNode *p = &dummy; while(l1 != nullptr && l2 != nullptr) { if(l1->val < l2->val) { p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } p->next = (l1 != nullptr) ? l1 : l2; return dummy.next; } };
2)递归版
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == nullptr) return l2; if(l2 == nullptr) return l1; if(l1->val < l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } } };
相关文章推荐
- [Leetcode]Merge Two Sorted Lists
- [LeetCode]Merge Two Sorted Lists
- LeetCode题解:Merge Two Sorted Lists
- LeetCode:Merge Two Sorted Lists
- Leetcode 21. Merge Two Sorted Lists (Easy) (cpp)
- leetcode 21 Merge Two Sorted Lists
- LeetCode_21---Merge Two Sorted Lists
- [leetcode]Merge Two Sorted Lists @ Python
- leetcode 21 Merge Two Sorted Lists
- [leetcode 21] Merge Two Sorted Lists
- LeetCode :: Merge Two Sorted Lists 详细分析
- LeetCode小白菜笔记[7]:Merge Two Sorted Lists
- [LeetCode] Merge Two Sorted Lists
- Leetcode[21]-Merge Two Sorted Lists
- LeetCode 21. Merge Two Sorted Lists
- LeetCode 21.Merge Two Sorted Lists
- leetcode之Merge Two Sorted Lists
- [leetcode] Merge Two Sorted Lists
- leetcode 21. Merge Two Sorted Lists
- LeetCode——Merge Two Sorted Lists