题解 | #判断链表中是否有环#
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
from pickle import NONE
from re import T
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
#
# @param head ListNode类
# @return bool布尔型
#
class Solution:
def hasCycle(self , head: ListNode) -> bool:
if head is None:
return False
# 双指针 快慢指针
slow = head
fast = head
while fast != None and fast.next != None:
slow = slow.next # 慢指针移动一步
fast = fast.next.next # 快指针移动两步
# 当双指针相遇 即表示指针有环
if slow == fast:
return True
# 快指针到末尾则表示没有环
return False
主要思路
本解决方法运用了双指针的思想,快指针一次走两步,慢指针一次走一步。如果有环的话,一定会相遇;如果快指针为None,则表示没有环。当链表为空的时候,也返回False。