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

有趣网站开发英文站友情链接去哪里查

有趣网站开发,英文站友情链接去哪里查,个旧市哪里有做网站,扬州做网站的公司哪个好🌈图示指向任意节点的带环链表 如图: 🌈快慢指针法判断链表是否带环 🌟思路:快指针fast一次走2步,慢指针slow一次走1步,fast先进环在换中运动,随后slow进入环。两指针每同时移动…

🌈图示指向任意节点的带环链表

如图:
在这里插入图片描述

🌈快慢指针法判断链表是否带环

🌟思路:快指针fast一次走2步,慢指针slow一次走1步,fast先进环在换中运动,随后slow进入环。两指针每同时移动一次,二者的相对距离减少1,此时二者一定会在环中相遇。
🌟同时还可得出结论:相遇时slow不可能走过一整个环。相同时间内fast走过的路程是slow的二倍,fast和slow相遇时,slow一定不可能走过了一整个环(假设slow走过了一次整个环,则fast走过了两次环,在这期间二者一定会相遇,因此假设不成立)。
🌟图示fast和slow相遇过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌟拓展思考:快指针fast一次走3步,慢指针slow一次走1步,此时一定会相遇吗?(C是圆环长度)
🌟答:不一定,当C-1为奇数时永远不会相遇。slow进环后,每同时移动一次,二者距离缩小2。当fast在slow后面且相隔1个节点时,再移动一次变成了fast在slow前且相隔1节点,进入了新一轮追逐,追逐距离还是是C-1(注意:追逐距离不是C-2),而C-1是奇数时,不管怎么减2,都不可能减为0,只会从1减到-1,又进入新一轮循环,追逐距离还是C-1,奇数,陷入死循环。
在这里插入图片描述

🌟根据原理类推,fast一次走4步,slow一次走一步,每次距离缩小3。当环的周长C为3的倍数时,会相遇,C的长度模3余2时,陷入死循环,循环时每轮追击距离为C-1;当环的周长模3余1时,陷入死循环,循环时每轮追击距离为C-2。
在这里插入图片描述

🌈找到带环链表中环的起始点

🌟由上文得出结论:fast和slow相遇时slow不可能走过一整个环,但是fast在slow进环前可能已经在环里走了好多圈了。此时fast大概率走了n-1圈但还没有走够n圈(当然巧合情况是fast刚好走了n圈),但是在fast追slow的过程中一定会把n圈补齐。
(想象一个L非常大,C非常小的带环链表),如下图:
在这里插入图片描述
🌟公式推导:
假设起点到入口点长度:L
假设环的周长:C
假设入口点到相遇点的数据:X
fast与slow相遇时:
slow走过的总长度:L+X;fast走过的总长度:L+n ∗ * c+X
列出方程:
2(L+X)=L+n ∗ * C+X ⇒ L+X=n ∗ * C ⇒ L=n ∗ * C-X
具象说明:一个指针从起点走,另一个指针从相遇点走,它们会在入口点相遇
在这里插入图片描述

☀️OJ题1:判断链表是否带环

链接: https://leetcode.cn/problems/linked-list-cycle/description/
在这里插入图片描述
在这里插入图片描述

思路:fast一次走两步,slow一次走一步,若有环则两指针一定会相遇。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
bool hasCycle(struct ListNode *head) {struct ListNode*fast=head,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(slow==fast)return slow;}return NULL;
}

☀️OJ题2:返回入环节点

链接: https://leetcode.cn/problems/linked-list-cycle-ii/description/
在这里插入图片描述
在这里插入图片描述

🌟法一:公式法( L=n ∗ * C-X)。

先让fast和slow相遇,再让一个指针从相遇点走,另一个指针从头节点走,两指针相遇点即为入环节点。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode* slow=head,*fast=head,*meet;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow){meet=fast;while(meet!=head){meet=meet->next;head=head->next;}return head;}}return NULL;
}

🌟法二:切断环,交叉链表求交点。

先让fast和slow相遇,从相遇点出断开环,此时演变为交叉链表求交点问题(先让长链表走差距步,再同时走,相遇处即环的起点)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode*fast=head,*slow=head,*meet,*meetnext;struct ListNode*head1,*head2;int count1=0,count2=0;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow){meet=slow;meetnext=meet->next;meet->next=NULL;head1=head;head2=meetnext;while(head1){head1=head1->next;count1++;}while(head2){head2=head2->next;count2++;}int sub=count1-count2;head1=head;head2=meetnext;if(sub>0){while(sub--){head1=head1->next;}}else if(sub==0){;}else{while(sub++){head2=head2->next;}}while(head1!=head2){head1=head1->next;head2=head2->next;}return head1;}}return NULL;
}
http://www.hkea.cn/news/720492/

相关文章:

  • wordpress 制作下载优化关键词怎么做
  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口
  • 点餐系统网站建设画质优化app下载
  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包
  • 中国工程局人才招聘网福建seo推广方案
  • 深圳南山做网站的公司百度投诉中心
  • 辽宁建设工程信息网业绩认定武汉网站优化公司
  • 莱芜都市人才网上海网站seo公司
  • 广州做鞋的网站怎么让某个关键词排名上去
  • 温州平阳县网站建设兼职东莞网络推广哪家公司奿
  • 做单页网站价格微信朋友圈广告在哪里做
  • 濮阳家电网站建设一般开车用什么导航最好
  • html5 图片展示网站大作设计网站
  • 河北正规网站建设比较百度一下你就知道官页
  • 企业网站建设哪家服务好福州网站关键词推广
  • 惠州悦商做网站软件开发一般需要多少钱
  • 做衣服外单网站优化大师官方正版下载