思路
关于判断是否重复的就hashSet,这种有主动去重性质的类
新建一个hashSet
遍历链表并放进hashSet,
如果不能放,说明这个遍历过,这个就是环的地方
如果最后到遍历到null,说明没环
代码
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
//都加入hashset,listNode是地址引用,节点一定唯一
//如果有不能添加的,返回当前节点
HashSet<Object> set = new HashSet<>();
ListNode cur = head;
while (cur != null) {
//如果能添加,continue
if(!set.add(cur)){
return cur;
}
cur = cur.next;
}
//等于null,退出,所以没有环,返回null
return null;
}
}
记录
总结
关于判断是否重复的就hashSet,这种有主动去重性质的类