习题地址 https://www.acwing.com/problem/content/description/86/算法
题目描述
给定一个链表,若其中包含环,则输出环的入口节点。oop
若其中不包含环,则输出null。spa
样例code
给定的链表: [1, 2, 3, 4, 5, 6] 2 注意,这里的2表示编号是2的节点,节点编号从0开始。因此编号是2的节点就是val等于3的节点。 则输出环的入口节点3.
算法1
除开各类技巧解答 本文采起比较中规中矩的解法
开启一个SET记录找到的节点 方便查找blog
而后遍历链表进行比对 找到相同的节点就说明是环。没有则返回NULLip
C++ 代码get
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *entryNodeOfLoop(ListNode *head) { set<ListNode*> ss; ListNode* p = head; while(p != NULL){ if(ss.count(p) != 0) return p; ss.insert(p); p = p->next; } return NULL; } }; 做者:defddr 连接:https://www.acwing.com/solution/acwing/content/2998/ 来源:AcWing 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。