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

网站设计人员就业要求东台网站设计

网站设计人员就业要求,东台网站设计,新商盟网站开发时间,wordpress 页面模板 不显示📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构探索 ✅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.yayakq.cn/news/321238/

相关文章:

  • 最近一周新闻大事件郑州有没有厉害的seo
  • 刷单网站建设国外外贸网站有哪些
  • 网站天天做收录有效果吗软件开发模型名词解释
  • 太原做网站的网络公司长沙电子商务网站建设
  • 网站图片有什么要求常见网络营销方式有哪些
  • 网站集约化 建设方案网站ui设计例子
  • 网站建设费用要摊销嘛从化网站建设优化
  • 做网站有哪个空间如何建设网站?
  • 做网站服务器价格多少合适什么信息发布型网站
  • 响应式网站有什么好处厦门网站建设680
  • 外贸公司网站改版思路检查网站死链接
  • 北京公司网站设计wordpress 仿糗事百科
  • 北京海淀区工商局网站如何做外贸品牌网站建设
  • 网站建设与维护采访稿广告平台投放
  • 30天网站建设实录素材dede淘宝客网站
  • 北京东城做网站清新区住房和城乡建设部网站
  • 法治建设网站模块名称搜狗不收录 wordpress
  • 浏览网站手机响开发触屏版网站标签
  • 北安网站建设手机软件商城
  • 做网站需要哪些技能网络综合布线系统设计方案
  • 专业营销型网站建设公司携程网网站做的怎么样
  • wordpress网站500错误青岛微信网站制作
  • 做论坛app网站衡水网站制作公司
  • 中国建设银行网站首页河西网点常德论坛网站
  • 域名访问网站怎么下载做网站用的系统
  • 手机网站建站保健品企业网站
  • 如何做招聘网站效果分析基础网页制作
  • 创造网站软件农村自建房设计图 效果图
  • 建网站的程序上传更新wordpress
  • 专业微网站哪家好网站版权信息的正确写法