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

链表中环的入口结点

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。刚开始学算法,有什么错误希望指正。

全部评论

相关推荐

醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务