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

星斗科技 网站建设重庆seo优化

星斗科技 网站建设,重庆seo优化,商务贸易网站建设,设计在线观看2014前言:给定一个链表,判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表,具体如下图所示。 对于链表,我们如何去判断链表是循环链表呢?又寻找入环点呢?我们可以利用快慢指针的方法…

 前言:给定一个链表,判断是否为循环链表并找环形链表的入口点

 

 

 

首先我们需要知道什么是双向循环链表,具体如下图所示。


 对于链表,我们如何去判断链表是循环链表呢?又寻找入环点呢?我们可以利用快慢指针的方法即慢指针一次走一步,快指针一次走两步,两个指针从链表其实位置开始运行,如果链表带环则一定会在环中相遇,否则快指针率先走到链表的末尾。为什么呢?原理是什么呢?我们利用图解分析一波?

 

问题2:如果slow走一步,fast走三步,他们还会相遇吗?会不会错过呢?我们图解分析一下:

 

 

开始追击的时候,他们fast每走一次,他们之间的距离就会缩小2,这时候就要分N奇偶的情况了,为偶的话一定会相遇,为奇的话,每次减少2步,最后fast会超越slow一步,假设环的周长是C的话也就是 fast和slow之间 会相距C -  1步,这时候又要分C-1奇偶情况,为偶数的话,一定会相遇,为奇数的话,就会陷入奇数循环,永远不会为偶。也就不会相遇。

问题3:如何找入口点呢?

快慢指针,相差一步的情况,我们知道一定会相遇,我们假设起始点距离入口点的距离为L,入口点距离相遇点的距离为X,环的周长为C,则相遇点距离入口点的距离为C - X,slow走的距离一定为:L + X因为,快指针走的路数一定是满指针的2倍,如果,满指针走了一圈半,或者两圈,则快指针一定走了三圈或者四圈,所以,满指针是不可能走超过一圈的步数的。那快指针呢?快指针走了多少呢?是 L + C + X ?因为是慢指针步数的二倍,所以是 2 * (L + X)  = L + C + X 推出来L = C - X ?这真的合理吗 肯定是不合理的 我们可以画个图推翻它,如下所示:

 当环很小的时候,譬如只有两个节点,而L为10个节点 fast每次两步,都绕九个环了,慢指针才进环,所以上面的推理是不合理的。

fast正确走的步数应该是 L + n * C + X,根据二倍的关系的话。2 * (L + X)= L + n * C + X 可以推出 L = n * C - X 为了方便 进一步转换成 L = (n - 1)C + C - X;当n为1时候,及L = C - X,所以得出结论:如果定义两个指针同时从相遇点开始走一定会在入口点相遇。详细代码如下:

解题思路:
如果链表存在环,则fast和slow会在环内相遇,定义相遇点到入口点的距离为X,定义环的长度为C,定义头到入口的距离为L,fast在slow进入环之后一圈内追上slow,则会得知:
slow所走的步数为:L + X
fast所走的步数为:L + X + N * C
并且fast所走的步数为slow的两倍,故:
2*(L + X) = L + X + N * C
即: L = N * C - X
所以从相遇点开始slow继续走,让一个指针从头开始走,相遇点即为入口节点
*/
typedef struct ListNode Node;
struct ListNode *detectCycle(struct ListNode *head) {Node* slow = head;Node* fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;//走到相遇点if(slow == fast){// 求环的入口点Node* meet = slow;Node* start = head;while(meet != start){meet = meet->next;start = start->next;}return meet;}}return NULL;
}

http://www.mnyf.cn/news/47301.html

相关文章:

  • 各类网站推广整站优化seo公司哪家好
  • 做网站添加mp3seo 是什么
  • 网络推广的公司搜索引擎优化师
  • 查看网站是否做百度推广岳阳网站界面设计
  • 制作网站用c 做前台天天seo百度点击器
  • 中文网站 可以做谷歌推广吗个人网站开发网
  • 网页和网站的区别成功的网络营销案例
  • 苹果个人开发者账号seo优化技巧有哪些
  • 南京电子商务网站建设刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • wordpress 网站很慢网络推广团队哪家好
  • 唐山网站建设七彩科技百度有几种推广方式
  • 广元百度做网站多少钱海外网站推广优化专员
  • wordpress调用文章分类seo关键词优化推广哪家好
  • PHP网站开发都需要学什么全国网站排名
  • wordpress微云解析插件seo站长工具平台
  • ps怎么做网站2024年3月新冠高峰
  • 网站设计与网页制作招聘百度小说
  • 武汉网站制作报价百度搜索关键词排名优化技术
  • 帮传销做网站会违法吗搜索引擎营销的流程
  • 公司免费网站制作百度搜索风云排行榜
  • 管理咨询有限公司安徽网站优化
  • 网页链接格式杭州网站建设 seo
  • seo的内容有哪些seo外包服务项目
  • 唐山网站建设公司seo基础知识培训
  • 云浮网站建设推广赚钱的微信小程序
  • 专业的深圳网站建设公司怎么开网站详细步骤
  • 电子商城网站开发购物车今天有什么新闻
  • 连云港网站建设免费二级域名注册网站有哪些
  • 有什么特点百度搜索名字排名优化
  • 温州做网站 掌熊号竞价托管