当前位置: 首页 > news >正文

龙岗同乐社区网站建设企业网站 app

龙岗同乐社区网站建设,企业网站 app,建设什么网站赚钱,申请网站到哪里复制带随机指针的链表1.题目2.解题思路3.完整代码1.题目 题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/ 给你一个长度为 n 的链表#xff0c;每个节点包含一个额外增加的随机指针 random #xff0c;该指针可以指向链表中的任何节点或空节点。 … 复制带随机指针的链表1.题目2.解题思路3.完整代码1.题目 题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/ 给你一个长度为 n 的链表每个节点包含一个额外增加的随机指针 random 该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。 例如如果原链表中有 X 和 Y 两个节点其中 X.random -- Y 。那么在复制链表中对应的两个节点 x 和 y 同样有 x.random -- y 。 返回复制链表的头节点。 用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示 val一个表示 Node.val 的整数。 random_index随机指针指向的节点索引范围从 0 到 n-1如果不指向任何节点则为 null 。 你的代码 只 接受原链表的头节点 head 作为传入参数。 2.解题思路 我们分3个步骤来解决这个题目 1.复制结点插入到原结点和下一个结点之间 2.根据原结点的random处理复制结点的random 3.把拷贝的结点解下来存放到新的链表中恢复原链表的链接关系。 步骤一画图理解 开辟一个copy的结点把cur-val的值赋给copy-val,接着把copy-next指向cur-next,又把cur-nextcopy,最后让curcopy-next;此做动作一直循环直到cur等于NULL时结束。 步骤二 让copy指向cur的下一个结点,如果cur-randomNULL则copy-randomNULL否则copy-randomcur-random-next 最后curcopy-next此动作一直循环直到curNULL时结束。 第一个原结点的random指向的是NULL所以拷贝结点的random也是指向的NULL 第二个原结点的random指向的是7所以拷贝结点的random也是指向的7这里的7是拷贝结点的7 这里copy-randomcur-random-next不太好理解就是拷贝结点的random是指向原结点的random的next,这样才能指向7这个拷贝的结点。 步骤三 首先定义两个指针copyHead和copyTail指针初始化为NULL,用来存放拷贝的结点组成一个新链表再定义一个cur指向headcopy指向cur的下一个结点next指向copy的下一个结点 解结点把copy结点放到新链表中如果copyTail/copyHead为空则把copy的结点放到里面去否则把copy结点放到copyTail中去然后让copyTail指向copy最后让cur-next指向next,cur指向next为下一次循环做准备。 把拷贝的结点解下来的同时需要把原链表的链接关系重新链接好。 这样就算是把原链表深拷贝了。 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;}//根据原结点的random处理复制结点的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;}//把拷贝的结点解下来存放到新的链表中恢复原链表的链接关系struct Node* copyHead NULL, *copyTail NULL;cur head;while(cur){struct Node* copy cur-next;struct Node* next copy-next;if(copyTail NULL){copyHead copyTail copy;}else{copyTail-next copy;copyTail copy;}//为下一次循环做准备cur-next next;cur next;}return copyHead; }不管你认为这篇文章写的好不好反正没人点赞
http://www.w-s-a.com/news/571886/

相关文章:

  • 做网站的规划和设想怎样做能让招聘网站记住密码
  • 建站知乎网站公告建设方案
  • 济南市住房和城乡建设局官方网站淮阳住房和城乡建设网站
  • 网站的设计特点有哪些seo推广要多少钱
  • wordpress开通多站点好处软件开发外包公司的设计一般多少钱
  • 为什么我的网站做不起来微信网页版登录手机版下载
  • 苏州市建设职业中心网站北京网站优化方法
  • 于飞网站开发溧阳 招网站开发
  • 网站中的宣传册翻页动画怎么做长沙有哪些网络平台公司
  • 如何做视频门户网站网站建设模板ppt
  • 青岛黄岛区网站开发百度云盘登录入口
  • 建设银行甘肃省行网站房地产市场调研报告
  • js 网站制作合肥公司网站建设
  • 最好建网站系统的软件wordpress调用模版
  • 个人网站备案地址阿里云增加网站
  • 自己做网站要办手续吗重庆短视频制作公司排名
  • 哪个全球购网站做的好汉中门户网官网
  • 网站建设有哪几种wordpress 项目选项
  • 成都网站建设开发公司哪家好验证码插件 wordpress
  • 企业网站设计要点泰州市网站制作公司
  • 网站用户运营北京官方网站怎么做
  • 农业门户网站开发做首图的网站
  • wordpress 素材站模板怎么制作网站程序
  • 做ps合成的网站wordpress付费查看下载主题
  • 个人网站建设完整教程wordpress服务器搬迁
  • wordpress.主题广州 网站优化
  • 手机版网站怎样做推广如何用asp做视频网站
  • dede 网站打开慢七牛云 微信 打开 wordpress
  • 哪里网站建设公司比较好教育培训类网站模板
  • 中国建设银行官网首页网站wordpress小工具不能完全显示