LeetCode--Merge Two Sorted Lists
Question
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.
解决思路
当看到这个题的时候,第一反应就是归并排序,只不过是在两个列表上做而已。 但是题目也没说是两个从大到小的序列还是从小到大的序列,或者两者都有。
列表上做归并排序有个技巧就是增加一个头结点,方便输出结果。 简单说一下归并排序:就是遍历两个列表,哪个列表中的值小就输出哪个值,然后指针后移。
实现代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0);
ListNode* ptr = head; // 表示当前最后输出的点
ListNode* cur = NULL; // 表示当前将要输出的点
while(l1 != NULL && l2!= NULL) {
if (l1->val <= l2->val) {
cur = l1;
l1 = l1->next;
} else {
cur = l2;
l2 = l2->next;
}
ptr->next = cur;
ptr = ptr->next;
}
if (l2 == NULL) {
ptr->next = l1;
}
if (l1 == NULL) {
ptr->next = l2;
}
return head->next;
}
};