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

10个值得推荐的免费设计网站湖南建筑信息一体化管理平台

10个值得推荐的免费设计网站,湖南建筑信息一体化管理平台,品牌logo设计在线生成,物流公司名称起名大全🔥个人主页:草莓熊Lotso 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的…

🔥个人主页:@草莓熊Lotso

🎬作者简介:C++研发方向学习者

📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。  

前言: 随着编程相关知识点的学习,我们LeetCode的刷题也不能落下。在前面我们也接触到了洛谷和牛客这两个刷题网站,但是博主一直都在推荐大家使用力扣,是因为力扣的判题严谨且大部分都是接口型题目,与面试中的笔试题也更加贴合。那么还是老样子,博主会为大家提供我自己的思路和代码,但是算法题的解法肯定不止一个,欢迎大家一起交流和讨论。


目录

链表的随机复制

解题过程:

代码演示:


链表的随机复制

题目链接:138. 随机链表的复制 - 力扣(LeetCode)

题目描述: 

题目示例: 

思路:在原链表基础上拷贝节点,置random指针,断开新旧链表

解题过程:

1.我们首先需要了解一下什么是浅拷贝什么是深拷贝


浅拷贝(Shallow Copy):

• 定义:仅复制变量本身的值,对于指针类型的成员,只复制指针的地址,而不复制指针所指向的内存内容。

• 特点:

◦ 拷贝后,原变量和新变量中的指针指向同一块内存空间。

◦ 实现简单,通常通过直接赋值(如=运算符)或memcpy等函数完成。

◦ 风险:当其中一个指针释放内存后,另一个指针会变成野指针,再次操作可能导致内存错误(如重复释放、访问已释放内存)。

深拷贝(Deep Copy):

• 定义:不仅复制变量本身的值,对于指针类型的成员,会先为新变量的指针分配新的内存空间,再将原指针指向的内容复制到新内存中。

• 特点:

◦ 拷贝后,原变量和新变量中的指针指向各自独立的内存空间,两者互不影响。

◦ 需要手动实现,通常通过自定义函数完成(需显式分配内存并复制内容)。

◦ 安全性高,避免了浅拷贝的内存冲突问题,但实现相对复杂,且会额外消耗内存。

2. 在原链表的基础上拷贝节点

3.置random指针 

一定要记住:copy->random=pcur->random->next

4.断开新旧链表 

时间复杂度:O(N)

代码演示:

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/
typedef struct Node Node;
Node* BuyNode(int x)
{Node*newnode=(Node*)malloc(sizeof(Node));newnode->val=x;newnode->next=newnode->random=NULL;return newnode;
}
void InsertaList(Node*head)
{Node*pcur=head;while(pcur){Node*newnode=BuyNode(pcur->val);Node*next=pcur->next;pcur->next=newnode;newnode->next=next;pcur=next;}
}
void SetRandom(Node*head)
{Node*pcur=head;while(pcur){Node*copy=pcur->next;if(pcur->random)copy->random=pcur->random->next;pcur=copy->next;}
}
struct Node* copyRandomList(struct Node* head) {if(head==NULL){return head;}//拷贝原链表的节点并插入原链表中InsertaList(head);//设置randomSetRandom(head);//断开新的链表Node*pcur=head;Node*copyhead,*copytail;copyhead=copytail=pcur->next;while(copytail->next){pcur=copytail->next;copytail->next=pcur->next;copytail=copytail->next;}return copyhead;
}

 

这里需要特别注意一下,如果为空特殊处理,不然运行会有问题


往期回顾: 

【数据结构初阶】--双向链表(一)

【数据结构初阶】--双向链表(二)

结语:本篇文章就到此结束了,《LetetCode刷题指南》中的题目比起之间的C语言刷题集中的题目,肯定会更加复杂一些。而且题目形式也不一样,大家需要注意一下。如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持

http://www.dtcms.com/a/588211.html

相关文章:

  • 企业建网站报价邯郸网站设计培训机构
  • 开网店做代理的公司网站北京平台网站建设多少钱
  • 做国际贸易哪个网站好做黄图网站接广告好赚吗
  • 网站没有备案怎么申请广告小程序制作软件费用
  • 如何提高网站访问速度safari网页视频怎么下载
  • 网站推广策划执行方案郑州比较大的软件公司
  • 企业专业网站建设建设网站列表
  • 家庭厨房做外卖网站简单电商网站模板
  • 昌做网站wordpress登录空白页
  • 建设银行湖北省分行 网站wordpress电子书
  • 某男神去年年底来某网站做见面会_竟要求安保人数超过两位数用visual做网站
  • 怎么做网站的百度收录网站备案背景幕布打印多大
  • 胶州市网站建设介绍国外的网站有什么不同
  • 浏览器无法打开住房和建设网站软件定制开发软件开发
  • 网站浏览历史能恢复吗怎么设置的山东聊城建设学校怎么样
  • 网站制作职责网站制作需要学什么语言
  • 手机网站怎么导入微信网站建设内容策划案
  • 网站开发合同模板免费网络品牌推广方法有哪些
  • 一台云服务器可以做几个网站哪里有广告设计制作的培训
  • 网站开发的内容和特点开发小程序费用一览表
  • 企业网站大全花儿直播免费视频观看
  • 聊城市城乡建设部网站查询建筑图集网站
  • 2024免费网站推广怎么制作自己的微信小程序
  • 奉贤做网站价格创意设计图片素材
  • wordpress百度秀seo 培训教程
  • 网站模型怎么做的培训机构网站制作
  • 中小企业网站制作方法做网站需要拉多大的宽带
  • 开装潢公司做网站短网址
  • 公司网站平台的作用wordpress更新文章
  • 秦淮html5响应式网站Wordpress博客欣赏