题目描述
思路:遍历整个单链表,把所有节点放到HashSet中,如果有重复项,则说明有环。
public class Solution {
public boolean hasCycle(ListNode head) {
Set<ListNode> seen = new HashSet<ListNode>(); //HashSet的值不能有重复,自带去重功能
while (head != null) { //这个循环条件,包含了一种情况:head=null,return false
if (!seen.add(head)) { //add()方法返回false,表示set里面已经存在这个值
return true; //链表中存在环
}
head = head.next;
}
return false;
}
}
本题还有快慢指针
的做法,这个做法不容易想到,就不写了。