目录
题目链接
注意点
- 两个链表长度可能不一致
解法
解法一:先比较两个链表长度一致的部分,多余的部分直接加进答案链表即可。时间复杂度为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; }};
小结
- 通常链表开头的第一个结点不存放数据,或者是不用来存放数据仅仅是作为一个向后访问用的哨兵节点。