门户网站建设背景,自己做一个app软件大概要多少钱,青岛网站建设邓巴迪,公司官网如何推广力扣刷题8——环形链表——[快慢双指针, 龟兔赛跑] 一、博客声明二、题目描述三、解题思路1、思路说明 四、解题代码#xff08;附注释#xff09; 一、博客声明 找工作逃不过刷题#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解题思路#xff0c;开辟这个系列来… 力扣刷题8——环形链表——[快慢双指针, 龟兔赛跑] 一、博客声明二、题目描述三、解题思路1、思路说明 四、解题代码附注释 一、博客声明 找工作逃不过刷题为了更好的督促自己学习以及理解力扣大佬们的解题思路开辟这个系列来记录。代码可能不是自己写的不求方法最好只求更多地理解大佬们的解题思路。 二、题目描述
给你一个链表的头节点 head 判断链表中是否有环。如果链表中有某个节点可以通过连续跟next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 则返回 true 。 否则返回 false 。
示例 1 输入head [3,2,0,-4], pos 1 输出true 解释链表中有一个环其尾部连接到第二个节点。
示例 2
输入head [1,2], pos 0 输出true 解释链表中有一个环其尾部连接到第一个节点。
示例 3 输入head [1], pos -1 输出false 解释链表中没有环。
提示 链表中节点的数目范围是 [0, 104] -10^5 Node.val 10^5 pos 为 -1 或者链表中的一个 有效索引 。 三、解题思路
1、思路说明 龟兔赛跑快指针比慢指针快两个节点只要存在环形链表就会相遇。 四、解题代码附注释
bool hasCycle(struct ListNode* head) {if (head NULL || head-next NULL) {return false;}struct ListNode* slow head;struct ListNode* fast head-next;while (slow ! fast) {if (fast NULL || fast-next NULL) {return false;}slow slow-next;fast fast-next-next;}return true;
}