Skip to content

Latest commit

 

History

History
41 lines (34 loc) · 1.05 KB

021.md

File metadata and controls

41 lines (34 loc) · 1.05 KB

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.

#解析 新建一个指针指向要返回的头节点之前的那个节点。之后不断插入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 head(INT_MIN);
        ListNode* tail = &head;
        
        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 head.next;
    }
};