首页 > 代码库 > [LeetCode] Merge Two Sorted Lists

[LeetCode] 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.

注意写出鲁棒性的代码,时间复杂度O(n),空间复杂度O(1)

/** * 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) return l2;        if (l2 == NULL) return l1;                ListNode *head = NULL;        ListNode **p = &head;        while (l1 && l2) {            if(l1->val < l2->val) {                *p = l1;                p = &(l1->next);                l1 = l1->next;            } else {                *p = l2;                p = &(l2->next);                l2 = l2->next;            }        }                if (l1 != NULL) {            *p = l1;        } else {            *p = l2;        }                return head;    }};

 

[LeetCode] Merge Two Sorted Lists