题目:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
题解:
我们需要一快一慢两指针。
快的一次走两步,慢的一次走一步。
如果有环,那么这两个指针在两次循环内肯定会相遇。
Code:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @return a boolean
def hasCycle(self, head):
p1 = head;
p2 = head;
while (p2 and p2.next):
p1 = p1.next
p2 = p2.next.next
if (p1 == p2):
return True
return False
Ps:
Python里的boolean值,首字母要大写:
True & False