rt。按照非降序合并。
这个就很像mergesort的merge过程。需要注意的是要发挥链表的特点。比如merge sort中最后的元素插入需要循环,而链表直接指向链表就好了。
代码如下:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *p1 = l1, *p2 = l2;
ListNode *ret = new ListNode(0);
ListNode *r= ret;
while(p1 && p2) {
if(p1->val < p2->val) {
r = p1;
p1 = p1->next;
} else {
r= p2;
p2 = p2->next;
}
r = r->next;
}
if(p1)
r = p1;
if(p2)
r = p2;
r = ret; //让r指向ret头部
ret = r->next;
delete(r);
return ret;
}
网友评论