很简单的问题。
唯一比较有挑战的地方可能就是要保证不引入额外的空间,找一个开始值最小的链表当做新链表的头部,把头部从链表中拆下来,其他的操作应该没有问题。
class Solution {
public:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
if(l1->val>l2->val)
swap(l1, l2);
ListNode *head = l1, *pNode = l1;
l1 = l1->next;
head->next = NULL;
while(l1&&l2){
if(l1->val <= l2->val){
pNode->next = l1;
pNode = l1;
l1 = l1->next;
}else{
pNode->next = l2;
pNode = l2;
l2 = l2->next;
}
pNode->next = NULL;
}
if(l1)
pNode->next = l1;
if(l2)
pNode->next = l2;
return head;
}
};