LeetCode 21 Merge Two Sorted Lists

来源:互联网 发布:linux程序设计pdf下载 编辑:程序博客网 时间:2024/05/01 11:29

题意:

排序两个已经有序的链表,空间复杂度O(1)。


思路:

很基本的题,经典的2个指针遍历链表的思路,将小的那个元素接到答案的最后一个元素之后,直到一条链遍历完毕。


代码:

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


0 0