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

网站设计的价格沪深300指数基金

网站设计的价格,沪深300指数基金,南通公司做网站,工程建设标准化🔥个人主页:草莓熊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/427624.html

相关文章:

  • Java-01-基础篇-JDK日志(JUL)
  • (基于江协科技)51单片机入门:7.LED点阵屏
  • 江协科技 CAN总线入门课程(错误处理)
  • 网站的建设与规划方案企业网站建设要素
  • antdv- Tooltip 文字提示组件
  • 算法题(222):摆花
  • 如何向alexa提交网站wordpress custom login
  • SpringCloud电商微服务项目衣拉客搭建指南
  • dev c++工具下载 dev c++安装包下载 dev c++软件网盘资源分享
  • 如何去掉Excel多余空行
  • 房地产网站欣赏万网空间管理
  • 做多语言网站多少钱免费网站安全软件大全下载安装
  • 【密码学实战】openHiTLS X509命令行工具: 数字证书生成与转换
  • 从“减塑”到“降碳”新天力“2R”模式推动行业低碳转型
  • AFSim雷达显控一体化
  • 网站建设类型智盈中心网站建设
  • 零基础从头教学Linux(Day 45)
  • 网站策划方案论文wordpress软件网站模板下载
  • 大数据变长存储算法
  • Ubuntu22.04安装Samba服务器
  • NACHI那智焊接机器人智能气阀
  • 网站怎么申请怎么注册交友软件网站建设
  • 网站建设官网多少钱设计公司名字logo
  • 安卓开发---通信录的UI实例
  • 35互联做的网站效果图制作教程
  • Gitee - IDEA 主支 master 和分支 dev 的使用
  • grep 命令处理文件差集
  • MySQL终极备份指南:用Percona XtraBackup实现零数据丢失!
  • FPGA实现SRIO图像视频传输,基于Serial Rapidlo Gen2,提供6套工程源码和技术支持
  • 网站推广渠道有哪些加盟编程教育哪家好