101合并有序链表

描述
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。
思路:
1.将链表2的节点迁过来
2.链表1的节点val小于链表2的节点val时,链表1节点往后走,直到找到比当前链表2节点val大的节点,进行头插
3.头插注意是否修改列链表1的头节点
4.结束条件:链表1遍历完了||链表2遍历完了
链表1遍历完的情况:1中的最大val没有链表2中的val大
链表2遍历完的情况:2中的最大val没有链表1中的val大

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead1 ListNode类 
     * @param pHead2 ListNode类 
     * @return ListNode类
     */
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        //将pHead2中的节点插入到pHead1中
        //需要连接就需要parent节点
        ListNode* parent = nullptr;
        ListNode* cur1 = pHead1;
        ListNode* cur2 = pHead2;
        while(cur1&&cur2)
        {
            //1.如果cur1->val小于cur2->val
            if(cur1->val < cur2->val)
            {
                parent = cur1;
                cur1 = cur1->next;
            }
            //2.如果cur1->val大于||等于cur2->val
            else {
                ListNode* next = cur2->next;
                //如果是头插,需要修改pthread的头指针
                if(parent == nullptr)
                {
                    cur2->next = cur1;
                    pHead1 = cur2;
                }
                else {
                    parent->next = cur2;
                    cur2->next = cur1;
                }
                //注意这里需要更改parent
                parent = cur2;
                cur2 = next;
            }
        }
        if(cur2)
        {
            parent->next = cur2;
        }
        return pHead1;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值