题目 Linked List cycle
描述
Given a linked list, determine if it has a cycle in it.
To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list.
Example 1:
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the second node.
Example 2:
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the first node.
Example 3:
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
注意
判断条件如若不存在fast->next->next会引发错误
解法
c++ 追赶链表 判断是否存在环
class Solution {
public:
bool hasCycle(ListNode head) {
if (head==NULL)
return false;
ListNode fast;
ListNode* slow;
fast=head;slow=head;
while(fast && fast->next)
{
slow = slow->next;
fast= fast->next->next;
if (slow==fast)
return true;
}
return false;
}
};
python 同理
class Solution(object):
def hasCycle(self, head):
“”"
:type head: ListNode
:rtype: bool
“”"
slow=fast=head
while fast and fast.next:
slow=slow.next
fast=fast.next.next
if slow==fast:
return True
return False