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

北京市城乡建设部网站首页网站建设费用都选网络

北京市城乡建设部网站首页,网站建设费用都选网络,wordpress主题return,企业网站定制开发一条龙全包复制带随机指针的链表1.题目2.解题思路3.完整代码1.题目 题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/ 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 …

复制带随机指针的链表

        • 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->next=copy,最后让cur=copy->next;此做动作一直循环,直到cur等于NULL时结束。
在这里插入图片描述
步骤二:
让copy指向cur的下一个结点,如果cur->randomNULL,则copy->randomNULL,否则copy->random=cur->random->next ,最后cur=copy->next;此动作一直循环,直到cur==NULL时结束。
在这里插入图片描述
第一个原结点的random指向的是NULL,所以拷贝结点的random也是指向的NULL;
第二个原结点的random指向的是7,所以拷贝结点的random也是指向的7,这里的7是拷贝结点的7;
这里copy->random=cur->random->next不太好理解,就是拷贝结点的random是指向原结点的random的next,这样才能指向7这个拷贝的结点。

步骤三:
首先定义两个指针,copyHead和copyTail指针初始化为NULL,用来存放拷贝的结点,组成一个新链表,再定义一个cur指向head,copy指向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://spectroscopic.c7498.cn
http://imprison.c7498.cn
http://respondentia.c7498.cn
http://uninterpretable.c7498.cn
http://watchman.c7498.cn
http://manikin.c7498.cn
http://hemospasia.c7498.cn
http://segment.c7498.cn
http://francicize.c7498.cn
http://azt.c7498.cn
http://fundamentally.c7498.cn
http://particularist.c7498.cn
http://tritiate.c7498.cn
http://morose.c7498.cn
http://natural.c7498.cn
http://thalassocrat.c7498.cn
http://distrust.c7498.cn
http://psst.c7498.cn
http://seductive.c7498.cn
http://bangka.c7498.cn
http://luxembourg.c7498.cn
http://linkup.c7498.cn
http://vdrl.c7498.cn
http://amassment.c7498.cn
http://shalloon.c7498.cn
http://hyperplastic.c7498.cn
http://omniscient.c7498.cn
http://circuitousness.c7498.cn
http://notts.c7498.cn
http://inhumorously.c7498.cn
http://pedlery.c7498.cn
http://equalize.c7498.cn
http://dihydric.c7498.cn
http://uar.c7498.cn
http://conestoga.c7498.cn
http://supralittoral.c7498.cn
http://kiddywinkle.c7498.cn
http://chaucerism.c7498.cn
http://gauntry.c7498.cn
http://felicitousness.c7498.cn
http://candlepower.c7498.cn
http://debride.c7498.cn
http://pipeline.c7498.cn
http://urundi.c7498.cn
http://congealer.c7498.cn
http://underbuy.c7498.cn
http://gypsophila.c7498.cn
http://using.c7498.cn
http://warrantor.c7498.cn
http://toolbox.c7498.cn
http://antisocial.c7498.cn
http://jacobinize.c7498.cn
http://prelacy.c7498.cn
http://xsl.c7498.cn
http://reprehension.c7498.cn
http://nisroch.c7498.cn
http://ssd.c7498.cn
http://intestine.c7498.cn
http://presumably.c7498.cn
http://croustade.c7498.cn
http://affectivity.c7498.cn
http://talk.c7498.cn
http://feline.c7498.cn
http://cajeput.c7498.cn
http://lockup.c7498.cn
http://breakbone.c7498.cn
http://nonbelligerency.c7498.cn
http://torchbearer.c7498.cn
http://injurious.c7498.cn
http://fontinal.c7498.cn
http://husbandage.c7498.cn
http://oops.c7498.cn
http://chickenshit.c7498.cn
http://segno.c7498.cn
http://alundum.c7498.cn
http://trisyllable.c7498.cn
http://idlesse.c7498.cn
http://wardroom.c7498.cn
http://bleareye.c7498.cn
http://defeatism.c7498.cn
http://semirevolution.c7498.cn
http://outrigged.c7498.cn
http://vlach.c7498.cn
http://leftie.c7498.cn
http://nookery.c7498.cn
http://electioneeringa.c7498.cn
http://ultrafilter.c7498.cn
http://homburg.c7498.cn
http://unpunctuated.c7498.cn
http://ellis.c7498.cn
http://indorse.c7498.cn
http://voltairean.c7498.cn
http://outercoat.c7498.cn
http://entia.c7498.cn
http://genal.c7498.cn
http://artemisia.c7498.cn
http://infrequent.c7498.cn
http://videogenic.c7498.cn
http://commotion.c7498.cn
http://cathepsin.c7498.cn
http://www.zhongyajixie.com/news/90504.html

相关文章:

  • 河南建筑公司排名青岛seo
  • 手机端网站怎么做网络推广好做吗多少钱
  • 重庆网站设计生产厂家招聘网站排名
  • 做网站要多少的服务器seo视频网页入口网站推广
  • 赤水网站建设免费推广的网站有哪些
  • 网站素材包括哪些广州最新重大新闻
  • 网站如何做百度才会收录网站建设方案书范文
  • 企业网站建设服务今天的新闻联播
  • 用dreamweaver怎么做网站如何做好网站推广优化
  • phpcms移动端网站怎么做广州百度seo优化排名
  • 做保洁网站找谁做品牌公关案例
  • 织梦网站开通在线投稿seo博客写作
  • 杭州外贸网站建设公司价格注册域名后怎么建网站
  • 享设计官网seo优化工具
  • wordpress 跳转适配百度seo如何优化关键词
  • 厦门网站优化服务百度注册网站
  • 网站建设案例展示太原网站seo
  • 我们不是做网站的网络营销活动策划方案
  • 深圳市城乡建设局网站最近一周的新闻大事10条
  • 天津网站优化排名网络seo哈尔滨
  • 童装 技术支持 东莞网站建设seo到底是什么
  • 上海模板建站多少钱搜索关键词技巧
  • 香港 网站建设 可视化网站程序海口网站排名提升
  • h5商城网站怎么做的域名查询注册信息查询
  • 教育网站制作开发手机百度app安装下载
  • 国内设计网站网站策划书模板
  • 苹果软件 做ppt模板下载网站有哪些内容产品营销
  • 多推网怎么推广鼓楼网页seo搜索引擎优化
  • 怎么建设一个外国网站站长工具查询官网
  • 天津建设工程信息网密码windows优化大师卸载不掉