题目
给定一个链表,判断链表中是否有环。
程序核心思想
方法非常简单,准备一个hashset,遍历每一个节点,如果遍历的当前节点不在hashset中,那么添加进hashset,然后遍历下一个,直到遍历的节点在hashset中了,那么就是有环的,返回true,或者是遍历到最后(出现了null)也没有发现其出现在hashset中,那么返回false。
Tips
代码
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
HashSet<ListNode> hs = new HashSet<ListNode>();
while(head != null){
if(!hs.contains(head)){
hs.add(head);
head = head.next;
}else{
return true;
}
}
return false;
}
}