解题思路
1:遍历链表,把指针作为key存在哈希表,如果map中存在该指针,说明有环
2:通过快慢指针,每个指针每次不一样的跨度,如果在某一时刻,两个指针相遇,说明有环
边界条件
链表是否为空
代码实现
建立在这篇代码的基础上php实现链表
public function isLoopLinkListByDoublePointer() {
$slow = $this->head->next;
if($slow == null){
return false;
}
$fast = $slow->next;
while($slow != null && $fast != null) {
if($slow == $fast){
return true;
}
$slow = $slow->next;
$fast = $fast->next;
if($fast != null){
$fast = $fast->next;
}
}
return false;
}