1.//环形链表
//输入:head = [3,2,0,-4], pos = 1
//输出:true
//解释:链表中有一个环,其尾部连接到第二个节点。
//输入:head = [1, 2], pos = 0
//输出:true
//解释:链表中有一个环,其尾部连接到第一个节点。
//输入:head = [1], pos = -1
//输出:false
//解释:链表中没有环。
//判断循环的时候地址是否相同
2.我们使用快慢指针,慢指针fast,快指针dev,fast走一步,dev走二步。当循环的时候,慢指针fast等于dev地址,就说明有环,不相等则没有环。
// Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* detectCycle(struct ListNode* head) {
struct ListNode* begin = head;
struct ListNode* end = head;
while (end && end->next)
{
//用快慢指针fast走一步(n),dev走二步(n+1),物理的追及问题
begin = begin->next;
end = end->next->next;
if (end == begin)
{
return 1;
}
}
return -1;
}
int main()
{
return 0;
}