目录
一、问题描述
二、解题思路
三、代码实现
四、刷题链接
一、问题描述
二、解题思路
本题基本思路:
1.设置一个hashSet来存储已经访问过的链表结点地址,注意不要直接存储链表内元素,因为链表内元素可能存在重复的,地址是不会重复的。
2.当访问到当前结点地址出现在hashSet中时,说明该结点就是环的入口结点,返回。
3.当结点访问到末尾时,nownode==null,也跳出循环,返回null。
三、代码实现
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
HashSet<Integer> addressSet=new HashSet<>();
ListNode nownode=pHead;
while(nownode!=null){
int nowAddr=System.identityHashCode(nownode);
if(addressSet.contains(nowAddr)){
break;
}else{
addressSet.add(nowAddr);
}
nownode=nownode.next;
}
return nownode;
}
}
四、刷题链接
链表中环的入口结点_牛客题霸_牛客网