链表随机指针

2023-10-27

我卡住的一个原因是,我曾想便利两次,想在第二遍的同时把两个链表分离开,结果失败了。必须三遍,以为random指针很可能指到前面已经断开的节点,而这个还是不用哈希的方式,因此如果前面的链表断开了,就都乱套了。

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* next;
    Node* random;
    
    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};
*/

class Solution {
public:
Node* copyRandomList(Node* first)
{
	if(NULL == first)
		return NULL;
	Node head = Node(-1);
	Node newhead = Node(-1);
	head.next = first;
	Node* node = head.next;
	Node* newnode = NULL;
	while(NULL != node)
	{
		Node* curnode = new Node(node->val);
		curnode->next = node->next;
		node->next = curnode;
		node = node->next->next;
	}

	node = head.next;
	newhead.next = node->next;
	newnode = newhead.next;	
	while(NULL != node)
	{
		newnode = node->next;
		newnode->random = NULL==node->random ? NULL : node->random->next;///<random指针可能是NULL
		node = node->next->next;;
	}

	node = head.next;
	newhead.next = node->next;
	newnode = newhead.next;
	while(NULL != node)
	{
		newnode = node->next;
		node->next = newnode->next;
		newnode->next = NULL==newnode->next ? NULL : newnode->next->next;
		node = node->next;
	}
	return newhead.next;
}
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链表随机指针 的相关文章

  • 最小二乘法拟合圆心与半径

    公众号 轻松玩转机器人 欢迎关注 1 算法介绍 最小二乘法的目的 通俗来说 就是拟合变量之间的关系 由于现实世界观测的变量存在噪声 找不到完美 不存在误差的关系 因此我们退而求其次 尽可能减小误差影响 误差有正有负 而我们希望消除正负方向的
  • FPGA实现数码管数字累加

    一 基本原理 FPGA数码管简单显示 简单数码管原理上文介绍过 本文主要介绍视觉在1ms内感知不到数码管数字来回切换的变动 1ms内数字跳变 眼睛感知是数字一直在显示 二 代码原理 1 显示模块 1 根据需要显示的数字 取出个 十 百 千位
  • 针对TextView更换字体颜色同时设置不同的点击事件的设计方案

    在需求中我们需要将下面的文字放到一起 并更改不同的颜色进行区分 还需要将用 用户协议 和 隐私政策 添加不同的点击事情 去跳转进行展示不同的说明 首先这是一个弹框 我们需要先去定义它的布局文件
  • 【科普贴】USB_ID介绍

    一 功能介绍 1 当前很多SOC 都支持OTG功能 所以mini micro USB的接口上通常会拓展一个USB ID引脚 如下图 2 USB ID pin 为低电平时 则设备为host模式 比如PC和支持OTG设备做主设备时 USB ID
  • platformio添加外部库文件方法

    方法1 在这里搜索所需要的库函数进行添加到工程里 方法2 常用 1 准备好所需要的库文件 2 打开工程文件夹 完成以上4步后 重启VScode 即可完成库文件添加 方法3 常用 当创建完工程后 在该工程中添加库 方法2是添加全局库的方法 添
  • QT中qrect的使用介绍,超级详细

    QT中qrect的使用 QT是跨平台的GUI应用程序开发框架 使用C 编写 其中 qrect是QT中一个常用的类 用于描述矩形 qrect的函数原型参数介绍 在使用qrect时 我们需要了解以下几个函数原型参数 QRect 构造函数 创建一
  • 基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python和mysql开发的BBS问答社区管理系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档 数据库脚本等 该项目附带全部源码可作为毕设使用 项
  • Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别

    注 此文章转载于其他大神 一 正面解读 Spring主要是基于IOC反转Beans管理Bean类 主要依存于SSH框架 Struts Spring Hibernate 这个MVC框架 所以定位很明确 Struts主要负责表示层的显示 Spr
  • MFC扩展库BCGControlBar Pro v33.6亮点 - 流程图、Ribbon Bar功能升级

    BCGControlBar库拥有500多个经过全面设计 测试和充分记录的MFC扩展类 我们的组件可以轻松地集成到您的应用程序中 并为您节省数百个开发和调试时间 BCGControlBar专业版 v33 6已正式发布了 此版本包含了对图表组件
  • anaconda、cuda、pytorch相关

    文章目录 0 00写在最前面 0 Anaconda安装 配置 使用的详细教程 1 MobaXterma远程连接服务器 2 linux系统下配置cuda及pytorch 3 linux操作系统下在conda环境中配置cuda和pytorch
  • Powershell快速入门(三) 实战应用

    好像关于Powershell说的已经差不多了 所以最后一篇文章就来使用Powershell写一些脚本 帮助我们完成一些日常工作 文件管理 常用命令 先来看看常用的文件管理命令 Set Location命令用于切换工作目录 它的别名是cd G
  • 基于SSM+Vue的乐购游戏商城系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端 采用Vue技术开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mave
  • 解放生产力!chatGPT接入Excel与Word教程(需要魔法上网,不用的都是骗人的)

    解放生产力 chatGPT接入Excel与Word教程 需要魔法上网 不用的都是骗人的 默认你注册过openAI账号了并使用过chatGPT了 本文就不教如何注册GPT啦 网上全是教程 这里贴一条亲测可用的教程网址 一 创建你的chatGP
  • centos7安装killall命令

    centos7精简安装后 使用中发现没有killall命令 经查找 可以通过以下命令解决 yum install psmisc y 简单介绍一下 psmisc Psmisc软件包包含三个帮助管理 proc目录的程序 安装下列程序 fuser
  • 模拟ic设计和数字ic设计的区别,含薪资表

    前言 本文主讲 数字IC设计与模拟IC设计的区别 初衷在于希望对新入行或想入行的同学在方向选择时提供有效的参考 正文 IC设计是半导体集成电路产品设计的统称 又称芯片设计 按功能可分为 数字IC 模拟IC 微波IC 其他IC 本文主要介绍数
  • sql根据指定字段查找表中重复记录,并统计重复次数

    查找表中重复记录 重复记录是根据单个字段来判断 并统计重复次数 SELECT 重复字段 COUNT 0 AS num FROM 表名 GROUP BY 重复字段 HAVING COUNT 重复字段 gt 1
  • npm link 引发的 Invalid hook call 问题

    项目场景 开发React组件库 假设路径为 workspace ui 时 为了避免每次修改都发布到 npm 在本地的测试项目 假设路径为 tmp test 中使用 npm link 为组件库建立软连接 方便本地调试 问题描述 不幸的是 发生
  • 对比学习:MoCo :Momentum Contrast for Unsupervised Visual Representation Learning

    参考链接 论文链接 https link zhihu com target https 3A arxiv org abs 1911 05722 代码链接 https github com facebookresearch moco Intr
  • QtCreator调试传入运行参数

    QtCreator是非常不错的IDE 最近在做的Qt命令行应用 因为调试的环境不同等问题 需要在调试的时候为 main 传入参数 度娘了半天 没找到方法 只能自力更生 后来在 项目 构建和运行 运行 下找到了 如果想在调试时为 main 传

随机推荐