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

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

import java.util.ArrayList;

public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {
        ArrayList list = new ArrayList();
        ListNode node = null;
        list.add(node);
        for (int j = 0; j < list.size(); j++) {
            for (int i = 0; i < j; i++) {
                if (pHead == list.get(i)) {
                    return pHead;
                }
            }
            list.add(pHead);
            pHead = pHead.next;
            if (pHead == null) {
                return null;
            }
        }
        return new ListNode(-1);
    }
}

两个for循环,如果phead为null则返回null,说明链表没有环。

当i第二次到值为3的节点时说明已经走过一个循环,j每次从0开始遍历到小于i的位置,当遍历到第一次的值为3的节点时将phead的地址与其比较,一样则说明有环,返回phead。

因为必须有返回值所以我写了 return new ListNode(-1);同时方便定位bug。刚开始学算法,有什么错误希望指正。

全部评论

相关推荐

04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务