LeetCode - 1669 - 合并两个链表 - Java - 细喔

=================================================================

在这里插入图片描述


题目解析 与 思维

========================================================================

删除 list1 下标为 a 到 下标为b 的之间所有节点(包括 下标 a,b两个节点)。

在这里插入图片描述

之后便是,将 list2 插入到 list1 中 原先 a 与 b 所在的那个位置

在这里插入图片描述

难点就在于 如何确定 a 的前驱节点 和 b的后驱节点,这样我们的list2 接入 list1,简单要死。定义一个 list2 的 头节点替身 ,让它去遍历list2的链表节点,找到最后一个节点的位置。

限制条件:while(head.next != null) head = head.next;

在这里插入图片描述

然后,就是合并:a的前驱节点的 next = list2;head.next = b的后驱节点

在这里插入图片描述

这题就完成了!


这题没什么细节,我直接上代码,你们应该都看得懂!

=======================================================================================


class Solution {

    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {

        ListNode begin = list1;// 记录 list1 下标为 a 的前驱节点

        ListNode end =  list1;// 记录 list1 下标为 b 的后驱节点



        for(int i = 0;i < a-1;i++){// 找到下标为 a -1 的节点,也就是 下标为 a 的前驱节点

            begin = begin.next;

        }

        for(int i = 0;i < b+1;i++){// 找到 下标为 b 的 后驱节点

            end = end.next;

        }

        ListNode cur = list2;// 代替 list2 去遍历 自身 链表节点

        while(cur.next != null){// 找到list2的尾节点

            cur = cur.next;

        } 

        // 将 list2 接入 list1中 原先 a 与 b 的位置

        // 同时,list1 原先下标为 a 的节点,就没有被调用了

        // 最终,会被 JVM 回收空间,然后下标 a 后面的 节点 也是一样的。

        // 就这样,一个接一个将 a 与 b 之间的节点全部回收(包括a、b两个节点)

        // 也就说 在list1 接入list2 的时候,间接的删除 原先的节点,

        begin.next = list2;

        cur.next = end;

        return list1;

    }

}



在这里插入图片描述

还是有个小小细节,来自于题目题干。

================================================================================

在这里插入图片描述

注意 下标两个字眼!!!!!

也就是说 list1 第一个节点 对应的下标是 0.,第二个节点下标是1,以此类推,找到 a 的前驱节点,就需要 循环变量 i < a -1。

有的人可能会说: 既然 a 是下标,那么为什么我们不是 i < a,下标与节点一一对应嘛!

你这需要仔细看我的代码

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值