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.
这道题是合并两个已排序链表,题目难度为easy。
在两个链表都没有遍历完时,逐个比较链表当前的节点,取其中小的放在合并后链表的尾部,某个链表遍历完之后可以直接把另一个链表剩余的节点接在合并后链表的尾部即可。另外还需要注意链表头的处理。具体代码:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = NULL;
ListNode* prev = NULL;
if(!l1) return l2;
else if(!l2) return l1;
while(l1 && l2) {
if(l1->val > l2->val) {
if(!head) head = l2;
if(prev) {
prev->next = l2;
prev = l2;
}
else prev = l2;
l2 = l2->next;
}
else {
if(!head) head = l1;
if(prev) {
prev->next = l1;
prev = l1;
}
else prev = l1;
l1 = l1->next;
}
}
if(l1) prev->next = l1;
if(l2) prev->next = l2;
return head;
}
};