【刷题笔记——链表专栏】牛客网:合并两个排序链表

【刷题笔记——链表专栏】牛客网:合并两个排序链表

一、题目描述

在这里插入图片描述
在这里插入图片描述

二、思路分析

1、创建新的头节点newHead(注意这一步)
2、循环遍历pHead1和pHead2并进行链表并进行合并,直到pHead1和pHead2其中有一个为null时结束循环
3、合并完成后,pHead1和pHead2谁还有剩余,将其链接到p之后
4、最后返回newHead.next

代码实现如下

    public ListNode Merge(ListNode pHead1, ListNode pHead2) {
    
    
        //1、创建新的头节点newHead
        ListNode newHead = new ListNode(-1);
        //创建p节点指向newHead用于在链表循环时遍历移动,而newHead作为新的头节点则不动
        ListNode p = newHead;

        //2、循环遍历pHead1和pHead2并进行链表并进行合并,直到pHead1和pHead2其中有一个为null时结束循环
        while (pHead1 != null && pHead2 != null) {
    
    
            if (pHead1.val < pHead2.val) {
    
    
                p.next = pHead1;
                pHead1 = pHead1.next;
            } else {
    
    
                p.next = pHead2;
                pHead2 = pHead2.next;
            }
            p = p.next;
        }

        //3、合并完成后,pHead1和pHead2谁还有剩余,将其链接到p之后
        p.next = pHead1 != null? pHead1 : pHead2;

        //4、最后返回newHead.next
        return newHead.next;
    }

猜你喜欢

转载自blog.csdn.net/weixin_43950588/article/details/131365094
今日推荐