给定两个已排序的链表,将这两个链表合并成一个排好序的链表
参照归并排序中的merge操作。想象有两个牌堆,每个牌堆都已经排好序,将这两个牌堆最上面的牌进行比较,小的放入新牌堆。
注意最后可能会形成有一个牌堆已经比较完,还有一个牌堆还剩余很多牌,将剩余的牌直接放入新牌堆即可。
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode(0);
ListNode* p = result;
while (l1 and l2) {
if (l1->val > l2->val) {
p->next = new ListNode(l2->val);
l2 = l2->next;
}else{
p->next = new ListNode(l1->val);
l1 = l1->next;
}
p = p->next;
}
if (l1) {
p->next = l1;
}
if (l2) {
p->next = l2;
}
return result->next;
}
};
题源还是来自于经典的算法本身
原文:https://www.cnblogs.com/MartinTai/p/14620095.html