(21)Merge Two Sorted Lists
題目:將兩個排好序的鏈表合併成一個排好序的鏈表,不允許開額外的空間。
例子:
所給鏈表爲l1 = 1->2->3,l2 = 2。
返回鏈表爲result = 1->2->2->3。
根據題目就是簡單的插入而已,在整個過程中將小的數字插在前面,大的數字放在後面就可以了。只不過用到的是鏈表,不是數組,所以整個過程中考慮的東西比較複雜,也是這道easy的題目讓我感覺到我在鏈表方面的欠缺,以後需要提高。
下面是代碼:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL){
return l2;
}
if(l2 == NULL){
return l1;
}
ListNode *head = (ListNode *)malloc(sizeof(ListNode)), *q;
head->next = l1;
q = head;
while(l1!=NULL&&l2!=NULL){
if(l2->val < l1->val){
ListNode *p = l2->next;
l2->next = l1;
q->next = l2;
l2 = p;
}
else{
l1 = l1->next;
}
q = q->next;
}
if(l2 != NULL){
q->next = l2;
}
return head->next;
}
};