目录

题目
Given a linked list, determine if it has a cycle in it.
解决方案
1 | /** |
注意事项
- 使用java中HashSet的特性:add(E e) 方法用于为指定的元素添加到这个组,如果它是不存在的,将新元素加入HashSet,并返回true;如果此set已经包含该元素,则调用设定不变,并返回false。
- 使用“双指针”的方法更快:
1
2
3
4
5
6
7
8
9
10
11public boolean hasCycle(ListNode head) {
if(head==null) return false;
ListNode walker = head;
ListNode runner = head;
while(runner.next!=null && runner.next.next!=null) {
walker = walker.next;
runner = runner.next.next;
if(walker==runner) return true;
}
return false;
}