138.随机链表的复制(附带源码)

目录

一、思路分析

二、如何操作

三、源码


深拷贝:原封不动的拷贝一份

一、思路分析:

这一题,偏向于技巧性。如果是按照工科思维硬推,那会非常头大,脑袋瓜疼。

这一题目的核心难点在于:处理random指针

思路的核心是:创建每一个节点的拷贝,链接在该节点的后面。

那么,每一个节点的random指针就是它前一个节点的random

例如:

7的random就是前一个节点7的random

13的random就是前一个节点13的random

...

看图:

二、如何操作

1、复制节点在原链表的后面

2、从复制节点的前一个节点找到其random

3、处理完后对复制的节点进行链接,直接取下来尾插

(注意画图,带上变量进行推演)

三、源码


struct Node* copyRandomList(struct Node* head) {struct Node *cur = head;//拷贝while(cur){struct Node* copy = (struct Node*) malloc(sizeof( struct Node));copy->val = cur->val;copy->next = cur->next;cur->next = copy;cur = copy->next;}//处理randomcur = head; while(cur){struct Node *copy = cur->next;if(cur->random == NULL){copy->random = NULL;}else{copy->random = cur->random->next;}cur = copy->next;}//处理新链表cur = head;struct Node *newhead = NULL;struct Node *tail = NULL;while(cur){struct Node *copy = cur->next;struct Node *next = copy->next;if(tail == NULL){newhead = tail = copy;}else{tail->next= copy;tail = tail->next;}cur->next = next;cur = next;}return newhead;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习STM32,该用哪款开发工具?

有很多初学者在问:学习STM32,该用哪款开发工具? 我首先说一下我的观点: 1.没有最好,只有适不适合,适合自己的才是最好的。 2.开发工具很多,各有各的特点,有优点肯定也有缺点。 本文…

Java网络编程-16

网络层级 import java.net.InetAddress; import java.net.UnknownHostException;//测试IP public class Demo {public static void main(String[] args) throws UnknownHostException {//查询本机地址InetAddress inetAddress InetAddress.getByName("127.0.0.1");…

快速排序(三)——hoare法

目录 ​一.前言 二.快速排序 hoare排法​ 三.结语 一.前言 本文给大家带来的是快速排序,快速排序是一种很强大的排序方法,相信大家在学习完后一定会有所收获。 码字不易,希望大家多多支持我呀!(三连+关…

Leetcode刷题笔记题解(C++):LCR 174. 寻找二叉搜索树中的目标节点

思路:二叉搜索树的中序遍历是有序的从大到小的,故得出中序遍历的结果,即要第cnt大的数为倒数第cnt的数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeN…

Maven 打包时,依赖配置正确,但是类引入出现错误,一般是快照(Snapshot)依赖拉取策略问题

问题描述: 项目打包时,类缺少依赖,操作 pom.xml -> Maven -> Reload project ,还是不生效,但是同事(别人)那里正常。 问题出现的环境: 可能项目是多模块项目,结构…

Mybatis 动态SQL(set)

我们先用XML的方式实现 : 把 id 为 13 的那一行的 username 改为 ip 创建一个接口 UserInfo2Mapper ,然后在接口中声明该方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import jav…

【TOP顶刊】众望所归!这本IEEE(trans),号称行业白月光,上涨至中科院1区,评职神刊好投吗?

计算机类 • 神级顶刊 今天带来IEEE旗下trans系列顶刊,在最新的2023中科院分期中上涨至中科院1区,期刊质量实力强劲,如有投稿意向可重点关注,具体详情见下文: 01 期刊简介 IEEE Transactions on Automatic Control …

CRM是什么软件?

阅读本文,你将了解:一、CRM是什么软件;二、CRM软件如何进行客户管理;三、CRM软件有什么价值;四、优秀案例分享。 一、CRM是什么软件 CRM(Customer Relationship Management,客户关系管理&…

【vscode】远程资源管理器自动登录服务器保姆级教程

远程资源管理器自动登录服务器 介绍如何配置本地生成rsa服务端添加rsa.pub配置config文件 介绍 vscode SSH 保存密码自动登录服务器 对比通过账号密码登录,自动连接能节约更多时间效率,且通过vim修改不容易发现一些换行或者引号导致的错误,v…

【Spring 篇】MyBatis多表操作:编织数据的交响乐

欢迎来到MyBatis的多表操作世界!在这个充满交响乐的舞台上,我们将探索如何巧妙地编织多个数据表的数据,创造出一场旋律动听的数据交响曲。无需繁琐的SQL拼接,MyBatis让多表操作变得优雅而简单。让我们一起进入这个音乐殿堂&#x…

8.3 Springboot整合Redis 之Jedis方式

文章目录 前言一、Maven依赖二、新增子Module:tg-book-redis三、Jedis配置类3.1 Jedis连接池核心配置说明四、Jedis 工具类五、新增controller测试前言 Jedis是Redis官方推荐的Java客户端连接工具,用法非常简单,Jedis的API与Redis的API可以说是一模一样,所以非常有利于熟悉…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming 1. 基本概念2. 代码详解3. 简单一维案例 1. 基本概念 Richoard Bell man 最优化理论: An optimal policy has the …