网站维护费大概多少,WordPress预各式华化,江门住房和城乡建设部网站,惠安网站建设费用牛客题霸 判断链表中是否有环 C题解/答案
题目描述
判断给定的链表中是否有环 扩展#xff1a; 你能给出空间复杂度的解法么#xff1f;
题解#xff1a;
在这介绍一个简便的方法#xff1a;快慢指针 就是#xff1a;一个指针走两步#xff0c;一个指针走一步 快慢指…牛客题霸 判断链表中是否有环 C题解/答案
题目描述
判断给定的链表中是否有环 扩展 你能给出空间复杂度的解法么
题解
在这介绍一个简便的方法快慢指针 就是一个指针走两步一个指针走一步 快慢指针中因为每一次移动后快指针都会比慢指针多走一个节点所以他们之间在进入环状链表后不论相隔多少个节点慢指针总会被快指针赶上并且重合此时就可以判断必定有环。 如果快指针到达NULL说明链表以NULL为结尾没有环 为什么要这样 如果两个指针只走一步那就有可能完美错开无法相遇所以要造成速度差使得能相遇 除了能找环还可以用来找环入口这里就不细讲了
代码
/*** 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) {ListNode *l1head;ListNode *l2head;while((l1!NULL)(l1-next!NULL)){l2l2-next;l1l1-next-next;if(l2l1)return 1;}return 0;}
};