2023每日刷题(三十三)
Leetcode—141.环形链表
快慢指针算法思想
关于快慢指针为什么能检测出环,可以这么思考。 假设存在一个环: 慢指针进入环后,快指针和慢指针之间相距为d,每一次移动,d都会缩小1,在经过r次移动后,二者就会相遇,此时慢指针刚好走完一圈环,快指针则是两倍,即两圈。 不存在环的情况下就是正常结束
实现代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode *head) {
struct ListNode* fast = head, *slow = head;
while(fast != NULL) {
fast = fast->next;
if(fast != NULL) {
fast = fast->next;
}
slow = slow->next;
if(fast == slow && slow != NULL) {
return true;
}
}
return false;
}
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!