1.迭代实现
class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { auto res=pHead1; ListNode* pre=0; auto h1=pHead1,h2=pHead2; for(;h1&&h2;) { if(h1->val>=h2->val) { if(pre==0) { auto temp=h2->next; h2->next=h1; pre=h2; res=h2; h2=temp; } else { auto temp=h2->next; pre->next=h2; h2->next=h1; pre=h2; h2=temp; } } else { pre=h1; h1=h1->next; } } if(h1==0&&h2!=0) { pre->next=h2; } return res; } };
2.递归实现
class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==0)return pHead2; if(pHead2==0)return pHead1; if(pHead1->val>=pHead2->val) { pHead2->next=Merge(pHead1,pHead2->next); return pHead2; } else { pHead1->next=Merge(pHead1->next,pHead2); return pHead1; } } };