网站响应式与电脑版有什么区别,橙色企业网站源码,WordPress底部自定义插件,wordpress萨隆设置牛客题霸 [链表中环的入口节点] C题解/答案
题目描述
对于一个给定的链表#xff0c;返回环的入口节点#xff0c;如果没有环#xff0c;返回null 拓展#xff1a; 你能给出不利用额外空间的解法么#xff1f;
题解#xff1a;
判断环有个很巧妙的方法#xff0c;之…牛客题霸 [链表中环的入口节点] C题解/答案
题目描述
对于一个给定的链表返回环的入口节点如果没有环返回null 拓展 你能给出不利用额外空间的解法么
题解
判断环有个很巧妙的方法之前说过一次用快慢指针 一个指针一次走一步另一个一次走两步两个指针存在速度差只要存在环两个指针必会相遇如果快指针都走到头了还没相遇那就没了 如何判断环的入口节点 我继续用上文的慢指针然后在设一个新的指针 让两个指针一步一步的跑因为慢指针现在在环上会在环上一种循环而新指针还未进环所以当两者相遇时就是在环的入口
代码
/*** 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) {if(headNULL||head-nextNULL)return NULL;ListNode *slowhead-next;ListNode *fasthead-next-next;ListNode *ahead;while(fast!slow){if(fastNULL||fast-nextNULL)return NULL;slowslow-next;fastfast-next-next;}while(a!slow){aa-next;slowslow-next;}return a;}
};