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;
}
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!