国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Leetcode 141. Linked List Cycle

2019-11-11 07:53:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Given a linked list, determine if it has a cycle in it.

Follow up: Can you solve it without using extra space?

s思路: 1. 經(jīng)典的題目!在這里突然想總結(jié)一下鏈表的操作:鏈表元素插入和刪除;鏈表的單向移動(dòng)。為實(shí)現(xiàn)鏈表元素插入和刪除,可能的方法包括dummy node和pointer-to-pointer;為實(shí)現(xiàn)鏈表的單向移動(dòng),就不得不提快慢指針的移動(dòng)方法了,不但可以檢測(cè)是否有cycle,還可以找鏈表的中點(diǎn)。總之,快慢指針移動(dòng)大法,都說(shuō)好!我只好奇,第一個(gè)發(fā)明這個(gè)方法的人,是怎么想到這個(gè)方法的,又是來(lái)解決什么問(wèn)題的? 2. 這里簡(jiǎn)單介紹一下快慢指針?lè)ǎ喝缦聢D:

-快指針移動(dòng)步數(shù):a+b+(b+c)*n (在cyle里面移動(dòng)n圈,n>=1)-慢指針移動(dòng)步數(shù):a+b-快指針移動(dòng)速度是慢的2倍,所以:2a+2b=a+(n+1)b+nc-所以:a=(n-1)(b+c)+c;因此,相遇后,把快指針?lè)诺絟ead,慢指針?lè)旁谙嘤龅牡胤剑嗤乃俣纫苿?dòng),則:快慢相遇的再次相遇的地方一定是cycle開(kāi)始的地方,即:可以檢查到cycle,以及break the cycle!

這里寫圖片描述

class Solution {public: bool hasCycle(ListNode *head) { // if(!head) return false; ListNode* fast=head->next,*slow=head;//bug:fast開(kāi)始就要比slow快一個(gè)位置 while(fast&&fast!=slow){ fast=fast->next?fast->next->next:NULL; slow=slow->next; } return fast==slow; //return fast!=NULL;//兩個(gè)條件都可以 }};
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 贡嘎县| 鹤岗市| 特克斯县| 隆子县| 竹溪县| 长丰县| 祁阳县| 邵阳县| 遂川县| 大埔县| 游戏| 微山县| 德格县| 仲巴县| 湟源县| 绥德县| 乡城县| 芜湖县| 红原县| 错那县| 上虞市| 赤水市| 三穗县| 龙州县| 波密县| 连平县| 新兴县| 丹寨县| 绍兴市| 琼海市| 遵化市| 永安市| 南涧| 依安县| 杨浦区| 仙居县| 雷州市| 财经| 无棣县| 自贡市| 山西省|