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

贵阳网站开发价格网站宣传费用

贵阳网站开发价格,网站宣传费用,网站维护 上海,搭建小程序需要什么样的服务器📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构探索 ✅LeetCode每日一道 🌅 有航道的人,再渺小也不会迷途。 LeetCode 138. 随机链表的复制 给你一个长度为 n 的链表,每个节点包含一个额外增加…

在这里插入图片描述

📷 江池俊: 个人主页

🔥个人专栏: ✅数据结构探索 ✅LeetCode每日一道

🌅 有航道的人,再渺小也不会迷途。

LeetCode 138. 随机链表的复制

在这里插入图片描述

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

构造这个链表的 深拷贝。 深拷贝应该正好由 n全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。

例如,如果原链表中有 XY 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 xy ,同样有 x.random --> y

返回复制链表的头节点。

用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:

  • val:一个表示 Node.val 的整数。
  • random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null

你的代码 接受原链表的头节点 head 作为传入参数。

在这里插入图片描述

迭代 + 节点拆分

思路及算法:

此处的难点就是如何 copy 深拷贝的节点的 random ?
思路是:将 copy 的节点依次插入到相应节点的后面,从而保证 copy 与相应的节点保持联系,而要找 copy 的节点的 random
就是先找到与 copy 对应的节点的 random ,而 randomnext 就是 copy 节点的 random ,因为 copy 节点是对应节点的后一个节点,故 copy 节点的 random 就是对应节点的后一个,它们对应的位置是不变的,copy 节点总是对应节点的后一个位置这里可以理解为假设你目前是一个单身狗,你想要找一个女朋友,而你的好兄弟有女朋友这时,你通过你跟你好兄弟的这层关系就可以去找好兄弟的女朋友把他的闺蜜介绍给你。

  1. 我们首先将该链表中每一个节点拆分为两个相连的节点,例如对于链表 A→B→C,我们可以将其拆分为 A→A′→B→B′→C→C′
    对于任意一个原节点 S,其拷贝节点 S′ 即为其后继节点。
  2. 这样,我们可以直接找到每一个拷贝节点 S′ 的随机指针应当指向的节点,即为其原节点 S 的随机指针指向的节点 T 的后继节点
    T′。需要注意原节点的随机指针可能为空,我们需要特别判断这种情况。
  3. 当我们完成了拷贝节点的随机指针的赋值,我们只需要将这个链表按照原节点与拷贝节点的种类进行拆分即可,只需要遍历一次。同样需要注意最后一个拷贝节点的后继节点为空,我们需要特别判断这种情况。
    在这里插入图片描述 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
struct Node* copyRandomList(struct Node* head) {if(head==NULL){return NULL;}//1.复制对应的链表节点,并连接在相应链表节点的后面struct Node* cur = head;while(cur){struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));newnode->val = cur->val;newnode->next = cur->next;cur->next = newnode;cur = newnode->next;}//2.处理复制链表节点的randomcur = head;while(cur){if(cur->random)cur->next->random = cur->random->next;elsecur->next->random = NULL;cur = cur->next->next;}//3.将原链表和复制链表拆分开,返回复制链表的头节点struct Node* newhead = head->next;struct Node* newcur = newhead;head->next = head->next->next;cur = head->next;while(cur){newcur->next = newcur->next->next;newcur = newcur->next;cur->next = cur->next->next;cur = cur->next;}newcur->next = NULL;return newhead;
}

http://www.yidumall.com/news/3278.html

相关文章:

  • 教育网站建设的雷区友情链接出售平台
  • axure做网站教学视频关键词搜索量全网查询
  • 网站设计网络推广商贸平台宁波网站推广方案
  • 安庆做网站赌博代理帮别人推广app赚钱
  • 制作微网站的平台做百度推广员赚钱吗
  • 网站后台动态播放怎么做的免费网站安全检测
  • ui交互设计做什么宁波seo
  • 做数据权威的网站有哪些北京效果好的网站推广
  • 企业网站优化广场舞父母不求咋报答同城推广引流平台
  • 做贵网站多少钱成都网站排名优化公司
  • 自己搭建网站怎么搭建利尔化学股票股吧
  • 如何制作网站有什么功能
  • wordpress英文博客模板seo算法优化
  • 高端网站建设网站建设设计思路seo排名点击首页
  • 西安网红打卡地seo关键词优化排名推广
  • 做网站一定要认证吗简单网站建设优化推广
  • 微信网站制作北京朔州网站seo
  • 专门做照片的网站抖音关键词优化排名
  • 哪个网站做的ppt模板好小红书seo排名帝搜软件
  • 电子商务网站开发与建设试卷怎么免费自己做推广
  • 投资网站建设爱站seo工具
  • 化州网站建设网站优化排名推广
  • 做一个网站需要多少钱大概费用宁波seo外包费用
  • 网站外链怎么做网站怎样做推广
  • 做论坛网站需要多大空间电商网站策划
  • 在家做十字绣兼职网站重庆网站关键词排名
  • 网站建设心得体会范文站外推广怎么做
  • 平面ui设计网站兰州做网站的公司
  • 网站后台管理系统界面杭州网站优化体验
  • 搜索引擎营销的概念搜索引擎的关键词优化