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

安徽网页设计深圳搜索seo优化排名

安徽网页设计,深圳搜索seo优化排名,黔江做网站,网站的详细设计目录 题一:环形链表 思路一: 题二:复制带随机指针的链表 思路一: 本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵! 题一:环形链表 给定一个链表的头节点…

目录

题一:环形链表

思路一:

题二:复制带随机指针的链表

 思路一:

本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵!


题一:环形链表

给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

示例 1:

思路一:

        定义快慢指针:slow,fast,slow每次走一步,fast每次走两步;假设到环口长度为L,环的周长为C,slow从环口到相遇点为S,如下图:slow走了:L+S fast走了:2*(L+S);当slow到环口时fast已经走了n圈到相遇时n>=1,所以fast到相遇时走了:L+n*C+S
得出运算式:L = n*C-S结论:一个指针从起点走,一个从相遇点走,他们会在入口点相遇。

struct ListNode *detectCycle(struct ListNode *head) 
{struct ListNode* slow = head;struct ListNode* fast = head;struct ListNode* newnode = head;//判断有没有相遇点while(fast && fast->next){slow = slow->next;fast = fast->next->next;//找到相遇点if(slow == fast){struct ListNode* node = slow;//分别从起点和相遇点开始走while(node != newnode){newnode = newnode->next;node = node->next;}return newnode;}}return NULL;
}

题二:复制带随机指针的链表

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

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

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

返回复制链表的头节点。

示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

 思路一:

第一步:在原链表的每一个之间开辟一块相同空间的copy将val和下一个的地址复制,并改变cur->next=copy;

第二步:因为每个原链表后面都有一个复制的copy链表所以copy-> randon都可以指向自己复制的randon核心: copy=cur-> randon->next

第三步:将copy链表从原链表head上分离出来,并将各自的节点接上

 

 

struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;while(cur){struct Node* next = cur->next;//开辟copy的节点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));//复制值copy->val = cur->val;//插入copy->next = next;cur->next = copy;//向后走cur = next;}cur = head;while(cur){struct Node* copy = cur->next;if(cur->random != NULL){//copy的随机节点指向自己的随机节点copy->random = cur->random->next;}else{copy->random = NULL;}cur = copy->next;}//分离链表struct Node* copyhead = NULL;struct Node* copytail = NULL;cur = head;while(cur){struct Node* copy = cur->next;struct Node* next = copy->next;//分离copy链表if(copytail == NULL){copyhead = copytail = copy;}else{copytail->next = copy;copytail = copytail->next;}//恢复原链表cur->next = next;cur = next;}return copyhead;
}

本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵!

http://www.hkea.cn/news/645156/

相关文章:

  • 百度做网站续费费用百度营业执照怎么办理
  • 深圳网站建设方维网络企业网站制作要求
  • 制作好网站黑帽seo教程
  • 云南 网站建设网站seo优化对网店的推广的作用为
  • 网站建设免费国外舆情服务公司
  • 怎么做网站banner查排名网站
  • 做网站好看的背景图片相关搜索优化软件
  • 怎么查网站是哪家制作公司做的百度收录查询
  • 企业年金交了有好处吗网络优化工程师吃香吗
  • python做网站开发百度6大核心部门
  • 自己做网站平台企业网站优化价格
  • 淘宝网网站建设的需求分析百度会员登录入口
  • 建网站的专业公司推广网站多少钱
  • 网站不去公安局备案自己怎么搭建网站
  • 外贸网站建设入门深圳网络推广哪家
  • 网站模板资源公司网站推广
  • 广东省建设教育协会官方网站首页html简单网页代码
  • 个人网站意义阿里指数官网最新版本
  • 网站开发方式有哪四种搜索引擎优化课程总结
  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口
  • php网站架设教程英雄联盟韩国
  • 做毕设好的网站百度客服电话24小时
  • 上海手机网站建设电话咨询seo综合查询系统
  • wordpress 4.6 中文版沈阳seo
  • 文件管理软件天津搜索引擎优化
  • 九亭网站建设全国疫情高峰时间表最新