NC4 链表是否有环
Posted Jqivin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 链表是否有环的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1711. 大餐计数/NC59 矩阵的最小路径和/NC19 子数组的最大累加和问题/NC4 判断链表中是否有环/NC34 求路径/NC65大数斐波那契数列/NC76用两个栈实现队列(