题解 | #链表中环的入口结点#

链表中环的入口结点

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;
}

全部评论

相关推荐

云边有个小卖铺儿:校招生违约率低,所以我要高😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务