牛客网 剑指offer 合并两个排序的链表

时间限制:1秒空间限制:32768K热度指数:13590

本题知识点:链表

**算法知识视频讲解

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

首先看A,B是否有空,若一个为空则直接返回另一个,若均不为空,则选择较小的为头,然后依次比较,直到一方为空,然后将剩下的接在result链表中

代码如下:

/*
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==NULL)return pHead2;
        if(pHead2==NULL)return pHead1;
        ListNode* result,*p;
        if(pHead1->val<=pHead2->val){
            result=pHead1;
            pHead1=pHead1->next;
        }else{
            result=pHead2;
            pHead2=pHead2->next;
        }
        p=result;
        while(pHead1&&pHead2){
            if(pHead1->val<=pHead2->val){
            	result->next=pHead1;
                pHead1=pHead1->next;
            }else{
                result->next=pHead2;
           		pHead2=pHead2->next;
            }
            result=result->next;
        }
        if(pHead1){
            result->next=pHead1;
        }
        if(pHead2){
            result->next=pHead2;
        }
        return p;
    }
};

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦