use a dummy node
维护两个指针对应两个链表,因为一般会以一条链表为基准,比如说l1,
那么如果l1当前元素比较小,那么直接移动l1即可,否则将l2当前的元素插入到l1当前元素的前面。算法时间复杂度是O(m+n),m和n分别是两
条链表的长度,空间复杂度是O(1),代码如下:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
ListNode dummy(0);dummy.next=l1;
ListNode*prev=&dummy;
while(l2&&prev->next){
if(l2->val<prev->next->val){
ListNode* ne=l2->next;
l2->next=prev->next;
prev->next=l2;
l2=ne;
}
prev=prev->next;
}
if(prev->next==NULL)
prev->next=l2;
return dummy.next;
}
No comments:
Post a Comment