创新的武进网站建设,高端网址,银川网站建设志达四方,湖北省黄冈建设信息网站目录
题目#xff1a;
示例#xff1a;
分析#xff1a;
代码#xff1a; 题目#xff1a; 示例#xff1a; 分析#xff1a; 题目给我们一个链表#xff0c;让我们判断这个链表是否有环。我们可以直接遍历这个链表#xff0c;最后能走到链表末尾也就是空指针那就…目录
题目
示例
分析
代码 题目 示例 分析 题目给我们一个链表让我们判断这个链表是否有环。我们可以直接遍历这个链表最后能走到链表末尾也就是空指针那就代表这个链表没有环如果一直死循环在走那么就说明我们陷入环了。
当然我们不可能这么做不可能每次判断一个链表有概率让我们的程序陷入死循环那么我们应该怎么做呢。
其实这是很经典的快慢指针题。我们需要定义两个指针来遍历这个链表其中一个快指针比慢指针每次多走一次如果快指针走到了链表末尾那么就没有环。如果链表有环那么因为快指针移动比慢指针多因此他们最终会相遇快慢指针相遇则表示链表有环。
一道经典的题目如果是刚接触的小白可能会没什么头绪不过再照着下面的动图和代码再理解理解就好啦。 代码
class Solution {
public:bool hasCycle(ListNode *head) {if(headnullptr) return false;ListNode* fasthead;ListNode* slowhead;fastfast-next;while(fast!nullptr){if(fastslow) return true;slowslow-next;fastfast-next;if(fast!nullptr) fastfast-next;}return false;}
};