Merge Two Sorted Lists - LeetCode
题目链接
Merge Two Sorted Lists - LeetCode
注意点
- 两个链表长度可能不一致
解法
解法一:先比较两个链表长度一致的部分,多余的部分直接加进答案链表即可。时间复杂度为O(n)
/**
* 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* ans = new ListNode(0);
ListNode* pointer = ans;
while(l1 != NULL && l2 != NULL)
{
if(l1->val < l2->val)
{
pointer->next = l1;
pointer = pointer->next;
l1 = l1->next;
}
else
{
pointer->next = l2;
pointer = pointer->next;
l2 = l2->next;
}
}
if(l1 != NULL)
{
pointer->next = l1;
}
if(l2 != NULL)
{
pointer->next = l2;
}
return ans->next;
}
};
小结
- 通常链表开头的第一个结点不存放数据,或者是不用来存放数据仅仅是作为一个向后访问用的哨兵节点。