本文主要是介绍环形链表2证明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解法
快慢指针相遇后,其中一个指回头部,然后同步前进
代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* fast=head;ListNode* slow=head;bool huan=false;while(fast!=nullptr&& fast->next!=nullptr){fast=fast->next->next;slow = slow->next;if(fast==slow){huan=true;break;}}if(!huan)return nullptr;slow=head;while(slow!=fast){slow = slow->next;fast = fast->next;}return slow;}
};
证明
证明得到,重置指针走到L时候,从另一个指针从相遇点走k3l-delatr,即也到了交叉位置。
这篇关于环形链表2证明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!