题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @return ListNode类 */ #define MAX_LIST_LEN 65535 struct ListNode* EntryNodeOfLoop(struct ListNode* pHead ) { // write code here //解题思路通过保存路径下标的方式查找是否存在环和入口位置,走过的标注1,入口处为2 int len_list = 0,record = 0;//记录链长 struct ListNode* node = pHead; int sub[MAX_LIST_LEN] = {0};//保存下标 if(node == NULL) { return NULL; } while(node->next != NULL) { //如果不存在环退出 if(sub[node->val] == 2) { //存在环强制退出 printf("Enter %d\n",node->val); record = 1; break; } else { record = 0; sub[node->val] += 1; node = node->next; len_list += 1; } } if(record == 1) { while(len_list--) pHead = pHead->next; } else { return NULL; } return pHead; }