复杂链表的复制(java)

2023-05-16

题目

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

分析
(1),1 -> 2 -> 3
(2),1 -> 1(copy) -> 2 ->2(copy) -> 3 -> 3 (copy)
(3),设置每个复制节点的random节点
(4),分离出新的链表即可

代码实现

/*
public class RandomListNode {
    int label;
    RandomListNode next = null;
    RandomListNode random = null;

    RandomListNode(int label) {
        this.label = label;
    }
}
*/
public class Solution {
    public RandomListNode Clone(RandomListNode pHead)
    { 
        if(pHead == null){
            return pHead;
        }
        RandomListNode cur = pHead;
        RandomListNode next = null;
        while(cur != null){
            RandomListNode tmp = new RandomListNode(cur.label);
            next = cur.next;
            cur.next = tmp;
            tmp.next = next;
            cur = next;
        }
        cur = pHead;
        while(cur != null){
            next = cur.next.next;
            if(cur.random != null){
                cur.next.random = cur.random.next;
            }
            cur = next;
        }
        RandomListNode res = pHead.next;
        RandomListNode curRes = res;
        cur = pHead;
        while(cur != null){
            cur.next = cur.next.next;
            if(curRes.next != null){
                curRes.next = curRes.next.next;
            }
            cur = cur.next;
            curRes = curRes.next;
        }
        return res;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复杂链表的复制(java) 的相关文章

随机推荐

  • 变量名尽量不要使用__或者_打头

    以两个下划线或下划线和大写字母打头的名称被保留给实现 xff08 编译器及其使用的资源 xff09 使用 以一个下划线开头的名称被保留给实现 xff0c 用作全局标识符
  • Kendryte K210 在freertos上的uart的使用

    首先修改project cfg h文件 xff0c 将硬件定义好的i2c引脚定义好 xff0c 其中40和41表示IO40和IO41 xff0c 如下 xff1a const fpioa cfg t g fpioa cfg 61 versi
  • Kendryte K210 在freertos上的lcd屏幕的使用

    K210上的lcd的屏幕为8位的spi并行接口 使用的屏幕开发板的型号为JLT32009A 某宝应该是可以买到的 需要注意的是若在某宝买的这种屏幕 一般会有8位和16位的区别 商家会告诉你这是两个不一样的屏 但是通过我们查看屏幕的规格书会发
  • Gamma分布、Beta分布、Dirichlet分布

    函数 函数是阶乘在实数上的推广 xff0c 定义为 xff1a x 61 43 0 t x 1 e t d t 函数的性质 xff1a x 43 1 61 x x
  • 消息队列OSQCreate失败:Assertion "OSQCreate" failed at line 71 in ..\LWIP\arch\sys_arch.c错误解决方法

    在STM32F407的上移植正点原子例程中的ucosII和LWIP功能时 xff0c 发现其他任务中创建其他消息邮箱后 xff0c 出现了如下的错误 xff1a Assertion OSQCreate failed at line 67 i
  • 学习Linux 编程的几本好书

    这次涉及到了具体的平台 GNU Linux Linux下开发与明显不同于Windows平台的特点 xff0c 从开发工具到项目组织 xff0c 都有较大的差距 首先声明 xff0c 在做Linux平台开发之前 xff0c 首先要熟练使用Li
  • http parser库的使用方法

    include 34 http parser h 34 include lt stdio h gt include lt stdlib h gt include lt string h gt include lt assert h gt i
  • PIXhawk4飞控学习笔记(一)开发环境

    PIXhawk4飞控学习笔记 xff08 一 xff09 开发环境 PIX4简介开发环境准备PIX4控制板MDK Keil5STM32CUBEMAXQGroundControl地面站 总结 PIX4简介 PX4是Dronecode平台的一部
  • Git常用命令

    1 Git全局设置 当安装Git后首先要做的事情是设置用户名称和email地址 这是非常重要的 xff0c 因为每次Git提交都会使用该用户信息 在Git 命令行中执行下面命令 xff1a 设置用户信息 git config global
  • 在PX4下更换pixhawk的IMU

    写在前面 出于一些原因 xff0c 这篇文章不给出具体的源码 xff0c 因此博主试着将这篇写成了一篇科普性质的文章 xff0c 如果你认真读的话 xff0c 应该会有收获的 为什么要更换pixhawk的传感器 xff1f 大多数的玩家拿到
  • 存储卡插上电脑时显示文件名变乱码请问怎样才能修复???

    存储卡在使用的过程中会出现各种奇怪的错误 xff0c 比如小编今天碰到的一个 xff0c 打开分区提示文件名变乱码 xff01 存储卡插上电脑时显示文件名变乱码请问怎样才能修复 存储卡在使用的过程中会出现各种奇怪的错误 xff0c 比如小编
  • putty使用python模块tkinter显示对话框出现_tkinter.TclError: no display name and no $DISPLAY environment variable

    问题描述 xff1a putty不能显示对话框 出现错误提示 xff1a tkinter TclError no display name and no DISPLAY environment variable 解决办法 xff1a 下载安
  • 有关于ValueError: Variable rnn/basic_lstm_cell/kernel already exists, disallowed.的问题

    很简单 xff0c 重新跑一篇程序 xff0c 我理解为重启核 xff1f xff1f xff1f jupyter中有kernel选项 xff0c 点击选择 Restart amp RunAll xff0c 即可解决问题 Mark
  • 从尾到头打印链表

    题目描述 xff1a 输入一个链表 xff0c 按链表值从尾到头的顺序返回一个ArrayList 分析 xff1a 1 xff0c 新建两个arraylist xff0c 2 xff0c 遍历链表 xff0c 存入第一个arraylist
  • Win10的Linux子系统Ubuntu安装图形界面

    Win10 的 Linux 子系统 Ubuntu 安装图形界面 陈拓 2021 07 25 2021 07 26 1 概述 Win10的linux子系统Windows Subsystem for Linux xff08 简称 WSL xff
  • 得到斐波那契数列的第n个数

    题目 xff1a 现在要求输入一个整数n xff0c 请你输出斐波那契数列的第n项 xff08 从0开始 xff0c 第0项为0 xff09 n lt 61 39 分析 xff1a 1 xff0c 1 xff0c 2 xff0c 3 xff
  • ModuleNotFoundError: No module named 'scipy._lib.decorator'问题解决

    问题来源 xff1a 在导入sklearn库时 xff0c 出现 usr lib python3 dist packages scipy sparse linalg isolve iterative py in 8 9 from scipy
  • 二叉搜索树的后序遍历序列

    题目 输入一个整数数组 xff0c 判断该数组是不是某二叉搜索树的后序遍历的结果 如果是则输出Yes 否则输出No 假设输入的数组的任意两个数字都互不相同 分析 碰到二叉树 xff0c 优先想递归 这里 xff0c 后序数组 xff0c 最
  • 二叉树中和为某一值的路径

    题目 输入一颗二叉树的跟节点和一个整数 xff0c 打印出二叉树中结点值的和为输入整数的所有路径 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 注意 在返回值的list中 xff0c 数组长度大的数组靠前 分析 二叉树
  • 复杂链表的复制(java)

    题目 输入一个复杂链表 xff08 每个节点中有节点值 xff0c 以及两个指针 xff0c 一个指向下一个节点 xff0c 另一个特殊指针指向任意一个节点 xff09 xff0c 返回结果为复制后复杂链表的head xff08 注意 xf