NC4 链表是否有环

Posted Jqivin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NC4 链表是否有环相关的知识,希望对你有一定的参考价值。

题目描述

NC4 链表是否有环

解题思路

错误思想:定义一个指针,让他往下走,如果和head相等就证明有环。这是错误的,因为可能是这种情况:

所以这样的代码可能无限循环。

正确的解法:快慢指针

代码展示

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if(head == nullptr) return false;
        ListNode* fast = head;
        ListNode* slow = head;
        while(fast != nullptr && fast->next != nullptr)
        {
            fast = fast->next->next;
            slow = slow->next;
             if(fast == slow)
                return true;
        }
        return false;
        
    }
};

以上是关于NC4 链表是否有环的主要内容,如果未能解决你的问题,请参考以下文章

判断链表是否有环(NC4/考察次数Top15/难度简单)

牛客题霸 NC4 判断链表中是否有环

LeetCode 1711. 大餐计数/NC59 矩阵的最小路径和/NC19 子数组的最大累加和问题/NC4 判断链表中是否有环/NC34 求路径/NC65大数斐波那契数列/NC76用两个栈实现队列(

快慢指针判断链表是否有环

链表—判断是否有环

算法题:判断链表中是否有环