LeetCode 21 Merge Two Sorted Lists 合并两个有序链表

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.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12         if(!l1&&!l2)
13             return nullptr;
14         if(!l1)
15             return l2;
16         if(!l2)
17             return l1;
18         ListNode* first=new ListNode(-1);
19         ListNode* cur=first;
20         while(l1&&l2)
21         {
22             if(l1->val<l2->val)
23             {
24                 cur->next=l1;
25                 l1=l1->next;
26             }
27             else
28             {
29                 cur->next=l2;
30                 l2=l2->next;
31             }
32             cur=cur->next;
33         }
34         cur->next=l1?l1:l2;
35         return first->next;
36     }
37 };

 

posted on 2018-03-17 16:01  lina2014  阅读(94)  评论(0编辑  收藏  举报

导航