LeetCode--Merge Two Sorted Lists
来源:互联网 发布:淘宝店铺招牌怎么上传 编辑:程序博客网 时间:2024/05/21 04:23
Merge 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.
方法一:新建一个单链表,比较l1和l2的节点元素大小,按顺序依次选择较小的放入,直到没有可比的节点时,剩下的l1或者l2的节点就是最大的那些。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode dummy(0); ListNode *tail=&dummy; while(l1&&l2){ if(l1->val<l2->val){ tail->next=l1; l1=l1->next; } else{ tail->next=l2; l2=l2->next; } tail=tail->next; } tail->next=l1?l1:l2; return dummy.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(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l2->next, l1); return l2; } }};
阅读全文
0 0
- LeetCode: Merge Two Sorted Lists
- [Leetcode] Merge Two Sorted Lists
- Leetcode: Merge Two Sorted Lists
- [LeetCode] Merge Two Sorted Lists
- [Leetcode] Merge two sorted lists
- leetcode Merge Two Sorted Lists
- [LeetCode]Merge Two Sorted Lists
- [leetcode]Merge Two Sorted Lists
- LeetCode-Merge Two Sorted Lists
- [leetcode] Merge Two Sorted Lists
- [LeetCode] Merge Two Sorted Lists
- LeetCode - Merge Two Sorted Lists
- LeetCode:Merge Two Sorted Lists
- LeetCode | Merge Two Sorted Lists
- 【leetcode】Merge Two Sorted Lists
- Leetcode: Merge Two Sorted Lists
- 【LeetCode】Merge Two Sorted Lists
- Leetcode Merge Two Sorted Lists
- 函数式编程
- 算法第四版Algorethms 4th学习笔记(1)
- TCP三次握手与四次握手
- Let's Chat
- 机器学习笔记(三) 随便实现的logistic回归
- LeetCode--Merge Two Sorted Lists
- linux文件的访问控制
- 16位汇编下的屏幕截取程序
- 锅打灰太狼游戏
- POJ
- 计算几何--POJ--3304--Segments
- 20170723 做的事 ecdsa的签名验证时间短于bls signature
- lowbit
- 链表面试题之判断链表是否带环?若带环求环的长度?若带环求环的入口点?