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

抚州市做棋牌网站济宁seo推广

抚州市做棋牌网站,济宁seo推广,wordpress存档显示文章所有内容,企业网站建设注意什么前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上链表OJ题目 目录 leetcode138. 复制带随机指针的链表 1. 问题描述 2.代码思路: 2.1拷贝节点插入到…

前言: 

💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥

✨✨刷题专栏:http://t.csdn.cn/UlvTc

⛳⛳本篇内容:力扣上链表OJ题目

目录

leetcode138. 复制带随机指针的链表

1. 问题描述

2.代码思路:

2.1拷贝节点插入到原节点的后面

2.2控制拷贝节点的random    

2.3拷贝节点解下来尾插组成拷贝链表,恢复原链表


leetcode138. 复制带随机指针的链表

来源:138. 复制带随机指针的链表 - 力扣(LeetCode)

1. 问题描述

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

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

应指向原链表中的节点 

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

返回复制链表的头节点。

题解接口: 

struct Node* copyRandomList(struct Node* head) {}

2.代码思路:

2.1拷贝节点插入到原节点的后面

        复制节点:遍历原链表,对于每个节点,创建一个副本节点,并将其插入到原节点的后面。

我们一步一步分解来做,首先malloc一个新的节点,然后让copy指针接收,让原链表第一个节点里面的val值赋值给新malloc出来的链表。

        最后记得将cur=next,让cur指向next,循环条件是cur不为NULL,再次回到循环,重复①②③④⑤⑥⑦的步骤

        这是链表的最后情况。 

2.2控制拷贝节点的random    

  • 设置random指针:遍历链表,对于每个原节点,设置对应副本节点的random指针。
  1. 如果原节点的random指针为NULL,则副本节点的random指针也设置为NULL
  2. 否则,副本节点的random指针设置为原节点的random指针指向的节点的副本节点。

分解动作:

①把cur指针重新指向原链表头节点(head

②进入while循环,条件是cur不为NULL,定义一个新指针copy然后让其指向新组成的链表头节点的下一个节点cur->next      

③     如果原链表的random域指向的地址为NULL,那么新节点的random域指向NULL

         如果原链表的random域指向的地址不为NULL,那么此时将此时cur->random->next的地址赋值给新节点的copy->random

④将copy->next赋值给cur

循环①②③④步,结束条件是cur指向NULL

这是最终情况.

2.3拷贝节点解下来尾插组成拷贝链表,恢复原链表

        分离链表:遍历合并后的链表,将链表分离为原链表副本链表。同时,恢复原链表的next指针,使其指向原链表的下一个节点;同时,构建副本链表,通过尾插法将副本节点依次添加到副本链表的末尾。

尾插:

恢复链表

         循环条件依然是cur不为NULL,当cur指向NULL,循环结束直接返回副本链表的头节点copyHead

代码实现:

struct Node* copyRandomList(struct Node* head) {//1.拷贝节点插入在原节点的后面struct Node* cur=head;while(cur){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;}//2.控制拷贝节点的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;}// 3、拷贝节点解下来尾插组成拷贝链表,恢复原链表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=copyTail->next;}//恢复原链表cur->next=next;cur= next;}return copyHead;
}

执行:

        文章讲解到此结束,如有错误,欢迎指正 感谢支持!

http://www.dt0577.cn/news/17341.html

相关文章:

  • 好网站页面网络整合营销理论
  • 辽宁省建设工程信息网业绩备案贵州seo技术培训
  • 沈阳建设公司网站数据分析师一般一个月多少钱
  • 制作网站riverseo文章生成器
  • yes风淘宝网站百度推广联系人
  • 网站如何做淘宝联盟推广怎样建立自己的网站平台
  • 阿里巴巴批发网站上面怎么做微商系统优化软件推荐
  • 做羞羞事的网站有哪些上海优质网站seo有哪些
  • 电子政务政府网站建设方案国内营销推广渠道
  • 柳州网络网站建设软文推广媒体
  • 做网站盈利万网域名管理入口
  • 做金属探测门批发网站网站维护需要多长时间
  • 用muse做网站windows优化大师可以卸载吗
  • 新能源汽车十大名牌百度seo排名原理
  • 网站制作都包括什么seo手机端优化
  • 苏州实力做网站公司有哪些seo的外链平台有哪些
  • 亚洲做性自拍视频网站怎么创建自己的免费网址
  • 网站开发html如何进行seo
  • org做后缀的网站大连网站建设
  • 网站如何做的有气质昆明seo建站
  • 怎么用dw做地图网站百度网盘app官网下载
  • 网站建设公司哪家强短视频seo推广
  • 浙江省建设厅门户网站网站制作
  • 广州公司注册资本减资流程及步骤免费广州seo
  • 国外用python做的网站创建网址快捷方式
  • 局域网网站怎么做深圳网站建设推广优化公司
  • 有什么网站可以做平面兼职网站策划是干什么的
  • 个人做网站和百家号赚钱企业员工培训总结
  • 个人微信公众平台注册流程公司网站如何seo
  • 郑州网站建设网络推广网络搜索引擎有哪些