LeetCode: Merge Two Sorted Lists
2014-11-06 14:33
399 查看
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.
Round 2:
Round 3:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL || l2 == NULL)
return l1 == NULL ? l2 : l1;
ListNode *newHead = NULL;
if(l1->val > l2->val)
{
newHead = l2;
l2 = l2->next;
}
else
{
newHead = l1;
l1 = l1->next;
}
ListNode *iter = newHead;
while(l1 != NULL & l2 != NULL)
{
if(l1->val > l2->val)
{
iter->next = l2;
l2 = l2->next;
}
else
{
iter->next = l1;
l1 = l1->next;
}
iter = iter->next;
}
if(l1 == NULL)
{
iter->next = l2;
}
else
{
iter->next = l1;
}
return newHead;
}
};
two lists.
/** * 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) { if(l1 == NULL || l2 == NULL) return l1 == NULL ? l2 : l1; ListNode *head = l1->val < l2->val ? l1 : l2; ListNode *p1 = l1, *p2 = l2; ListNode *pre = NULL, *cur = NULL; while(p1 != NULL && p2 != NULL) { if(p1->val < p2->val) { cur = p1; p1 = p1->next; } else { cur = p2; p2 = p2->next; } if(pre != NULL) pre->next = cur; pre = cur; } cur->next = p1 == NULL ? p2 : p1; return head; } };
Round 2:
class Solution { public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *iter, *head; iter = new ListNode(0); if(l1 == NULL && l2 == NULL) return NULL; else if(l1 == NULL || l2 == NULL) return l1 == NULL ? l2 : l1; else head = l1->val < l2->val ? l1 : l2; while(l1 != NULL && l2 != NULL) { iter->next = l1->val < l2->val ? l1 : l2; if(iter->next == l1) l1 = l1->next; else l2 = l2->next; iter = iter->next; } iter->next = l1 == NULL ? l2: l1; return head; } };
Round 3:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL || l2 == NULL)
return l1 == NULL ? l2 : l1;
ListNode *newHead = NULL;
if(l1->val > l2->val)
{
newHead = l2;
l2 = l2->next;
}
else
{
newHead = l1;
l1 = l1->next;
}
ListNode *iter = newHead;
while(l1 != NULL & l2 != NULL)
{
if(l1->val > l2->val)
{
iter->next = l2;
l2 = l2->next;
}
else
{
iter->next = l1;
l1 = l1->next;
}
iter = iter->next;
}
if(l1 == NULL)
{
iter->next = l2;
}
else
{
iter->next = l1;
}
return newHead;
}
};
相关文章推荐
- 25_leetcode_ Merge Two Sorted Lists
- leetcode-21 Merge Two Sorted Lists
- [Leetcode] Merge Two Sorted Lists
- LeetCode_OJ【21】Merge Two Sorted Lists
- leetcode 21: Merge Two Sorted Lists
- leetcode---merge-two-sorted-lists---链表
- [LeetCode][JavaScript]Merge Two Sorted Lists
- Leetcode-21:Merge Two Sorted Lists
- LeetCode小白菜笔记[7]:Merge Two Sorted Lists
- [LeetCode 21] Merge Two Sorted Lists Solution
- LeetCode 21.Merge Two Sorted Lists
- LeetCode Merge Two Sorted Lists
- 【LeetCode-easy】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