题目 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
本文介绍了一种使用快慢指针技术检测链表中是否存在环的高效算法。通过实例展示了不同情况下链表环的判断过程,包括环在链表头部、中间及不存在环的情况。文章提供了C++和Python两种语言的实现代码。
310

被折叠的 条评论
为什么被折叠?



