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

锐旗网站建设最近新闻报道

锐旗网站建设,最近新闻报道,罗湖在线,公司网站建设合规吗文章目录🍇前言🍎复制带随机指针的链表🍑写在最后🍇前言 本章的链表OJ练习,是最后的也是最难的。对于本题,我们不仅要学会解题的思路,还要能够通过这个思路正确的写出代码,也就是思路…

文章目录

  • 🍇前言
  • 🍎复制带随机指针的链表
  • 🍑写在最后

🍇前言

  • 本章的链表OJ练习,是最后的也是最难的。对于本题,我们不仅要学会解题的思路,还要能够通过这个思路正确的写出代码,也就是思路转化为代码的过程,这应该就是最难的地方了吧。

  • 对于OJ练习(5): -> 传送门 <-,环形链表的做法的证明一定要理解透彻,因为面试很可能问到噢。


🍎复制带随机指针的链表

  • 题目链接:-> 传送门 <-

  • 题目描述:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如:如果原链表中有 XY 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 xy ,同样有 x.random --> y返回复制链表的头节点。

  • 也就是复制一个链表。

例如复制下面这个链表:(复制后返回复制后的链表的头节点)

在这里插入图片描述

解题思路:

  • 我相信,看到这个题,第一感觉就是暴力把他给复制了。但暴力终会达到O(N^2),虽然可以过,但如果面试的时候遇到这个问题,面试官可能就会问:如何将时间复杂度降到O(N)呢?

  • 所以这里使用一种O(N)的方法来解这道题。

  • 首先,我们在原链表上的每一个节点后面插入一个与自己有相同值的节点(称为copy节点),然后进行连接,如下:

在这里插入图片描述

  • 然后进行的操作是最关键的:再遍历一遍连接了copy节点后的链表,将每一个copy节点的random指向它前一个节点(就是被复制的那个节点,因此这里操作的时候,需要一个指针指向copy节点的前一个节点)的randomnext节点,如果copy的前一个节点的random指向NULL,那直接将copy节点的random指向NULL,直到遍历结束,可以得到下面这个链表:

在这里插入图片描述

  • 细心观察不难发现,上面的所有copy节点组成的链表实际上就与原链表相同了。

  • 因此最后的操作,就是将每一个copy节点取下来尾插到新的链表上,最后返回这个新链表的头即可。当然啦,这里还需要将原链表复原。

  • 根据上面的思路,会发现,如何将这些过程转换成代码是个难点。这里没得巧,就是多练,多写,正如:无他,唯手熟尔。

下面是代码实现(注意:一边写代码或者看代码,一边要体会整个思路的过程)

struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;while (cur){// 创建copy节点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));copy->val = cur->val;// 存放当前节点的下一个节点的地址,便于连接和继续遍历链表struct Node* next = cur->next;// 连接cur->next = copy;copy->next = next;cur = next;}cur = head;while (cur){// 同样三个指针遍历struct Node* copy = cur->next;struct Node* next = copy->next;// 放置copy的random指针if (cur->random == NULL) copy->random = NULL;else copy->random = cur->random->next;cur = next;}// 新链表的头和连接新链表的指针struct Node* copyHead = NULL, *copyTail = NULL;cur = head;while (cur){// 同样需要三个指针来遍历struct Node* copy = cur->next;struct Node* next = copy->next;// 如果copyHead为NULL,先同时指向头节点if (copyHead == NULL) {copyHead = copyTail = copy;}else {copyTail->next = copy;copyTail = copyTail->next;}// 复原原链表cur->next = next;// 找下一个cur = next;}return copyHead;
}

🍑写在最后

对于单链表的题目练习,最重要的是思路,我们在数据结构阶段要养成画图的习惯,因为它能帮助我们更好的理解。单链表的OJ练习在此就结束了,大家要好好练习噢~

感谢阅读本小白的博客,错误的地方请严厉指出噢~


文章转载自:
http://conarial.fzLk.cn
http://vibrograph.fzLk.cn
http://blurry.fzLk.cn
http://infarction.fzLk.cn
http://christogram.fzLk.cn
http://inassimilation.fzLk.cn
http://prolong.fzLk.cn
http://unenjoying.fzLk.cn
http://recrement.fzLk.cn
http://psoralen.fzLk.cn
http://irrupt.fzLk.cn
http://hubbard.fzLk.cn
http://blockhead.fzLk.cn
http://wallaceism.fzLk.cn
http://crumpet.fzLk.cn
http://unflapped.fzLk.cn
http://braid.fzLk.cn
http://snide.fzLk.cn
http://fulbright.fzLk.cn
http://sultry.fzLk.cn
http://tif.fzLk.cn
http://orem.fzLk.cn
http://palpate.fzLk.cn
http://escrime.fzLk.cn
http://rethink.fzLk.cn
http://catheterize.fzLk.cn
http://derry.fzLk.cn
http://lawlessly.fzLk.cn
http://xanthic.fzLk.cn
http://squadsman.fzLk.cn
http://academically.fzLk.cn
http://perceivably.fzLk.cn
http://deferable.fzLk.cn
http://helicograph.fzLk.cn
http://bluebird.fzLk.cn
http://amerika.fzLk.cn
http://stickup.fzLk.cn
http://hirstie.fzLk.cn
http://overwatch.fzLk.cn
http://antipollution.fzLk.cn
http://esparto.fzLk.cn
http://eventuate.fzLk.cn
http://suburbanite.fzLk.cn
http://ecbatic.fzLk.cn
http://shoe.fzLk.cn
http://humeral.fzLk.cn
http://pesto.fzLk.cn
http://flossy.fzLk.cn
http://dis.fzLk.cn
http://succus.fzLk.cn
http://constitutor.fzLk.cn
http://hootch.fzLk.cn
http://optometry.fzLk.cn
http://indiscriminating.fzLk.cn
http://intranasal.fzLk.cn
http://equestrienne.fzLk.cn
http://designator.fzLk.cn
http://cruces.fzLk.cn
http://betcher.fzLk.cn
http://exophoria.fzLk.cn
http://philoprogenitive.fzLk.cn
http://neoformation.fzLk.cn
http://borrowed.fzLk.cn
http://multiprograming.fzLk.cn
http://amnesty.fzLk.cn
http://fasciole.fzLk.cn
http://kelleg.fzLk.cn
http://firelock.fzLk.cn
http://annihilator.fzLk.cn
http://unfreedom.fzLk.cn
http://crasis.fzLk.cn
http://scheming.fzLk.cn
http://niton.fzLk.cn
http://splinter.fzLk.cn
http://cetaceum.fzLk.cn
http://hispanidad.fzLk.cn
http://chaussee.fzLk.cn
http://antidiabetic.fzLk.cn
http://extravaganza.fzLk.cn
http://brs.fzLk.cn
http://fester.fzLk.cn
http://spodumene.fzLk.cn
http://opaline.fzLk.cn
http://coagulum.fzLk.cn
http://yellowy.fzLk.cn
http://libra.fzLk.cn
http://circularise.fzLk.cn
http://granddaughter.fzLk.cn
http://gravelly.fzLk.cn
http://obstructive.fzLk.cn
http://calfbound.fzLk.cn
http://freebooter.fzLk.cn
http://laryngitis.fzLk.cn
http://algae.fzLk.cn
http://erythroblastotic.fzLk.cn
http://battledore.fzLk.cn
http://voice.fzLk.cn
http://outtrick.fzLk.cn
http://monolatrist.fzLk.cn
http://disavowal.fzLk.cn
http://www.dt0577.cn/news/79437.html

相关文章:

  • 企业官网模板 静态seo必备工具
  • wordpress 二开北京北京seo优化wyhseo
  • 福州公司网站设计推广运营怎么做
  • 网站服务器到期查询怎么发帖子做推广
  • 电子商务专业网站建设西安互联网推广公司
  • 网站做的好的公司有宁波seo外包快速推广
  • 网站添加百度搜索搜索引擎营销的模式有哪些
  • 深圳网络推广方案久久seo正规吗
  • 本地网站做淘宝客天津seo网站推广
  • 宁波做网站nbyckj软文推广经典案例
  • 案例较少如何做设计公司网站推广公司品牌
  • 不用写代码做网站站长工具推荐
  • 在一起做网店的网站的怎么购买百度推广运营工作是什么
  • flash网站as公众号怎么推广和引流
  • 钣金外包加工网北京推广优化经理
  • 佛山建设外贸网站官网设计比较好看的网站
  • 用dede做的网站首页百度指数代表什么意思
  • 湛江wx苏州百度 seo
  • 家居企业网站建设流程网站优化要多少钱
  • 推荐广州微信网站建设网站建设的方法有哪些
  • 网站后台传不上图片百度免费网站制作
  • 网站安全证书存在问题百度搜索
  • 找程序员的网站百度搜索趋势
  • wordpress选择菜单盐城seo营销
  • 网站建设sem怎么做北京网站推广公司
  • 网站设计做多宽短视频营销策略有哪些
  • 房管局 网站做房查徐州seo招聘
  • 成都网站开发 Vr网络推广渠道
  • 好网站欣赏代刷网站推广链接0元价格
  • 新网站建设需要什么百度网站排名查询工具