21. Merge Two Sorted Lists

来源:互联网 发布:淘宝激活店铺 编辑:程序博客网 时间:2024/06/01 07:15

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Example:

Input: 1->2->4, 1->3->4Output: 1->1->2->3->4->4
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; *///非递归class Solution {public:    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {        if(!l1) return l2;        if(!l2) return l1;        ListNode *head=new ListNode(0);        ListNode *p=head;        while(l1 && l2){            if(l1->val < l2->val){                p->next=l1;                l1=l1->next;            }            else{                p->next=l2;                l2=l2->next;            }            p=p->next;        }        if(!l1) p->next=l2;        else p->next=l1;        p=head->next;        delete(head);        return p;    }};#print(nums[begin:end+1])  return ms  //递归class Solution {public:    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {        if(l1==nullptr) return l2;        if(l2==nullptr) return l1;        ListNode *r;        if(l1->val > l2->val){            r=l2;            r->next=mergeTwoLists(l1,l2->next);        }        else{            r=l1;            r->next=mergeTwoLists(l1->next,l2);        }        return r;    }};
 
原创粉丝点击