题目:判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度O(1)的解法么?
题解:最简单的一种方式就是快慢指针,慢指针针每次走一步,快指针每次走两步,如果相遇就说明有环,如果有一个为空说明没有环
代码:
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
#
# @param head ListNode类
# @return bool布尔型
#
class Solution:
def hasCycle(self , head ):
# write code here
fast = slow = head
# 如果没有环,则一定会出现下一个节点未空的情况
# 为什么要判断fast.next也不为空呢?因为下边要去fast.next.next
while fast is not None and fast.next is not None:
fast = fast.next.next
slow = slow.next
if fast is slow:
return True
return False