[LeetCode] [快慢指针] Linked List Cycle

来源:互联网 发布:自助域名绑定如何实现 编辑:程序博客网 时间:2024/05/11 13:06

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

问题描述:给定一个链表,判断该链表中是否有环。

这是快慢指针的常见应用。快慢指针主要用在链表中,定义两个指针,一个递增较快,一个较慢。

这里,可以定义两个指向链表节点的指针,一个步长为1,一个步长为2,如果链表中有环,那么步长为2的必定先进入环,步长为1的后进入环,之后就是一个追及问题,那么,它们迟早会相遇,如果链表中没有环,那么步长为2的肯定先到达链表尾。

class Solution {public:    bool hasCycle(ListNode *head) {        if(head == NULL || head->next == NULL)            return false;        ListNode *fast = head, *slow = head;while(fast && fast->next) {slow = slow->next;fast = fast->next->next;if(slow == fast) {break;}}return slow == fast;    }};


0 0
原创粉丝点击