题解 | #合并两个排序的链表#

合并两个排序的链表

http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        if(pHead1==nullptr && pHead2 == nullptr) return nullptr;
        if(pHead1==nullptr && pHead2 != nullptr) return pHead2;
        if(pHead1!=nullptr && pHead2 == nullptr) return pHead1;
        ListNode* minHead = pHead1->val >= pHead2->val ? pHead2: pHead1;
        ListNode* maxHead = pHead1->val < pHead2->val ? pHead2: pHead1;
        ListNode* mincur = minHead;
        ListNode* maxcur = maxHead;
        ListNode* minpre = minHead;
        while(mincur->next&&maxcur){
            
            if(mincur->next->val >= maxcur->val){
                ListNode* temp = mincur->next;
                mincur->next = new ListNode(maxcur->val);
                mincur->next->next = temp;
                minpre = temp;
                maxcur = maxcur->next;
            }
            mincur = mincur->next;
            
        }
        while(mincur->next) mincur = mincur->next;
        mincur->next = maxcur;
        return minHead;
    }
};


全部评论

相关推荐

程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务