力扣:随即指针138. 复制带随机指针的链表

news2024/11/29 2:31:40

复制带随机指针的链表


OJ链接

分析:
该题的大致题意就是有一个带随机指针的链表,复制这个链表但是不能指向原链表的节点,所以每一个节点都要复制一遍
大神思路:
ps:我是学来的

在这里插入图片描述
上代码:

struct Node* copyRandomList(struct Node* head)
{
    //1.在原链表每个节点的后面复制一个节点
   struct Node* cur = head;
    while(cur)
    {
        //插入
        struct Node*copy = (struct Node*)malloc(sizeof(struct Node));
        if(copy == NULL)
        {
            perror("malloc\n");
            return NULL;
        }
        copy->val = cur->val;
        struct Node* next = cur->next;
        cur->next = copy;
        copy->next = next;
        //迭代
        cur = next;
    } 
    //2.处理random
    cur = head;
    while(cur)
    {
        struct Node*copy = cur->next;
        if(cur->random == NULL)
        {
            copy->random = NULL;
        }
        else
        {
            copy->random = cur->random->next;//这个思路的点睛之笔
        }
        cur = copy->next;//迭代
    }
    //3.恢复原链表,链接新链表  删除+尾插 
    cur=head;
    struct Node* copyhead = NULL;
    struct Node* copytail = NULL;
    while(cur)
    {
        struct Node* copy = cur->next;
        struct Node* next = copy->next;//用来还原原链表
    //尾插:链接新链表
        //空链表(第一次尾插)
        if(copyhead == NULL)
        {
            copyhead = copytail = copy;
        }
        else
        {
            copytail->next = copy;//尾插
            copytail = copytail->next;//迭代 
        }
        
    //删除:恢复原链表
        //free(cur->next);//此处不用free
        cur->next = next;

        cur = cur->next;//迭代
    }
   
    return copyhead;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/967835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D DRAM:突破内存瓶颈的新希望

DRAM,动态随机存储器,是一种在计算机、消费电子、通信等领域广泛应用的内存技术。它的主要特点是在同一周期内可以随机读取或写入单字节数据,使得其在各种计算应用中成为不可或缺的组件。 DRAM的发展历程充满了戏剧性和技术革新。最早的DRAM诞…

【5】openGL使用宏和函数进行错误检测

当我们编写openGL程序,没有报编译链接错误,但是运行结果是黑屏,这不是我们想要的。 openGL提供了glGetError 来检查错误,我们可以通过在运行时进行打断点查看glGetError返回值,得到的是一个十进制数,将其转…

Jenkins+maven+testng+htmlreport单元自动化测试

背景说明 为了可以在jenkins自动化运行单元测试的代码,所以使用maventestng的技术结合,达到手动或者定时去执行单元测试的代码,以便提高人工运行的自动化的效率。单元通过该方案也可以套用在httpclient框架去执行测试web api接口的自动化测试…

SILERGY(矽力杰)功率电子开关 SY6280AAC

SILERGY(矽力杰)功率电子开关 SY6280AAC Low Loss Power Distribution Switch SOT-5 Pacakge 2.4V ~ 5.5V (<6V) 0.6W Max. Current 2A Reverse blocking (no body diode) Programmable current limit ( Ilimits(A) 6800 / Rset(ohm). ) Application Circuit (Reco…

跳出Lambda表达式forEach()循环解决思路

背景 在一次需求开发时&#xff0c;发现使用Lambda的forEach()跳不出循环。如下示例代码&#xff0c;想在遍历满足条件时跳出循环。 public static void main(String[] args) {List<Integer> list Arrays.asList(1, 4, 5, 7, 9, 11);list.forEach(e -> {if (e % 2 …

质量属性案例-架构真题(二十一)

试题一 某电子商务公司升级会员与促销管理系统&#xff0c;向用户提交个性化服务&#xff0c;提高用户粘性。在项目建立之初&#xff0c;公司领导人一致认为目标是提升会员管理方式的灵活性&#xff0c;由于当前用户规模不大&#xff0c;用户简单&#xff0c;系统方面不需要做…

Python游戏开发-超级海盗!!!

开发环境配置 安装python环境后&#xff0c;下载pygame模块&#xff0c;使用如下命令 pip install pygame 注&#xff1a;该项目使用了一些新特性&#xff0c;使用3.10以上的版本 游戏项目介绍 游戏分为两个模块&#xff0c;分别是编辑模块和关卡模块&#xff0c;在编辑模…

Lesson5-2:OpenCV视频操作---视频追踪

学习目标 理解meanshift的原理知道camshift算法能够使用meanshift和Camshift进行目标追踪 1.meanshift 1.1原理 m e a n s h i f t meanshift meanshift算法的原理很简单。假设你有一堆点集&#xff0c;还有一个小的窗口&#xff0c;这个窗口可能是圆形的&#xff0c;现在你可…

CocosCreator3.8研究笔记(四)CocosCreator 脚本说明及使用(上)

在Cocos Creator中&#xff0c;脚本代码文件分为模块和插件两种方式&#xff1a; 模块一般就是项目的脚本&#xff0c;包含项目中创建的代码、引擎模块、第三方模块。 插件脚本&#xff0c;是指从 Cocos Creator 属性检查器中导入的插件&#xff0c;一般是引入第三方引入库文件…

PixelSNAIL论文代码学习(3)——自注意力机制的实现

文章目录 引言正文介绍自注意力机制的简单实现样例本文中的自注意力机制具体实现代码分析nn.nin函数的具体实现nn.causal_attention模块实现注意力模块实现代码完整实现代码使用pytorch实现因果注意力模块causal_atttention模块 问题 总结引用 引言 阅读了pixelSNAIL,很简短&a…

java八股文面试[多线程]——线程的状态

5种状态一般是针对传统的线程状态来说&#xff08;操作系统层面&#xff09; 6种状态&#xff1a;Java中给线程准备的 NEW&#xff1a;Thread对象被创建出来了&#xff0c;但是还没有执行start方法。 RUNNABLE&#xff1a;Thread对象调用了start方法&#xff0c;就为RUNNABLE状…

已解决“SyntaxError: invalid character in identifier“报错问题

本文摘要&#xff1a;本文已解决 Python FileNotFoundError 的相关报错问题&#xff0c;并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领…

Oracle数据库分页查询

方法一 方法二 方法一要比方法二效率要高很多&#xff0c;查询效率提高主要体现在WHERE ROWNUM < 40这个语句上。 这是由于CBO优化模式下&#xff0c;Oracle可以将外层的查询条件推到内层查询中&#xff0c;以提高内层查询的执行效率。方法一中&#xff0c;第二层的查询条件…

完善开发工具箱:免费开源社区版软件推荐

一、背景 工欲善其事必先利其器&#xff0c;在日常的IT工作中&#xff0c;好的工具软件是开发者日常工作中最重要的工具之一。然而&#xff0c;专业版的软件价格昂贵&#xff0c;对于小团队或个人开发者来说可能是一大负担。当然国内大家会普遍推荐使用破解版&#xff0c;小公…

Java【手撕滑动窗口】LeetCode 438. “字符串中所有异位词“, 图文详解思路分析 + 代码

文章目录 前言一、字符串中所有异位词1, 题目2, 思路分析2.1, 引入哈希表找出异位词2.2, 引入变量记录"有效字符的个数"2.3, left 右移维护窗口2.4, 总结核心步骤 3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; Ja…

bazel工程介绍和demo构建

参考官方示例项目&#xff1a;git clone https://github.com/bazelbuild/examples 项目结构 使用Bazel管理的项目一般包含以下几种Bazel相关的文件&#xff1a;WORKSPACE(同WORKSPACE.bazel)&#xff0c;BUILD(同BUILD.bazel)&#xff0c;.bzl 和 .bazelrc 等。 具体结构如下…

【洛谷】P3853 路标设置

原题链接&#xff1a;https://www.luogu.com.cn/problem/P3853 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路&#xff1a;二分答案 由题意知&#xff0c;公路上相邻路标的最大距离定义为该公路的“空旷指数”。在公路上增设一些路标&…

6. series对象及DataFrame对象知识总结

【目录】 文章目录 6. series对象及DataFrame对象知识总结1. 导入pandas库2. pd.Series创建Series对象2.1 data 列表2.2 data 字典 3. s1.index获取索引4. s1.value获取值5. pd.DataFrame()-创建DataFrame 对象5.1 data 列表5.2 data 嵌套列表5.3 data 字典 6. df[列索引]…

Linux安装MySQL5.7.26教程图解

0、准备工作 下载MySQL软件包 ①、官网下载&#xff1a;https://www.cnblogs.com/linu-x/p/15701479.html#_label6 ②、百度网盘下载&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;chao ③、文件说明 主机名 CentOS版本 MySQL版本 IP地址 test CentOS Linux …

AtCoder Beginner Contest 318

目录 A - Full Moon B - Overlapping sheets C - Blue Spring D - General Weighted Max Matching E - Sandwiches F - Octopus A - Full Moon #include<bits/stdc.h> using namespace std; const int N1e65; typedef long long ll ; const int maxv4e65; typedef …