題目描述:給定乙個鍊錶,判斷它是否有環。
這道題如果使用額外空間的話,可以借用set,每走過乙個點就放到set中,當走著走著再次碰到之前的點了就說明有環。下面使用不耗費額外空間的方法:快慢指標實現。
解題思路:
快慢指標的經典題。 快指標每次走兩步,慢指標一次走一步。 在慢指標進入環之後,快慢指標之間的距離每次縮小1,所以最終能相遇。
/**
* definition of singly-linked-list:
* class listnode
* }*/class
solution
slow = head;
fast = head-
>next;
while
(nullptr
!= fast &&
nullptr
!= fast-
>next)
slow = slow-
>next;
fast = fast-
>next-
>next;
}return
false;}
};
lintcode練習 102 帶環鍊錶
給定乙個鍊錶,判斷它是否有環。給出 21 10 4 5,tail connects to node index 1,返回 true 不要使用額外的空間 實現 思路 快慢指標的典型應用,使用快指標 fast 與慢指標 slow,slow每次後移一位,fast 每次後移兩位,當fast 與 slow 指...
102 帶環鍊錶
帶環鍊錶得幾個問題 判斷乙個鍊錶是否有環,如果有環,則返回入環的第乙個節點,否則返回null 如果乙個鍊錶有環,遍歷乙個鍊錶便永遠不會到達null,否則必定會到達null。設定兩個指標,剛開始都指向頭節點,遍歷時,乙個指標每次前進一步,我們稱之為慢指標,另乙個每次前進兩步,稱之為快指標,這樣,如果鍊...
LintCode 帶環鍊錶
給定乙個鍊錶,判斷它是否有環。參考了網上一些資料,算是乙個總結。感謝sunflower yolanda的文章。由這個問題可以引申出來幾個問題,先解決本身。1.判斷是否有環。利用兩個指標slow fast。初始時,兩個指標都在表頭。slow每次走一步,fast每次走兩步。如果不存在環,那麼fast一定...