题解 | #判断链表中是否有环#
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
很简单的思路
成环的条件
对当前链表进行遍历,如果有一个结点被访问两次则有环;则问题关键在于如何判断某结点是否被访问过。
注意题目中这句话
数据范围:……链表中任意节点的值满足 |val| <= 100000
结点的值有范围限制(而且不大),可以如下方法区分该结点是否被访问过:
遍历过程中,把每个遍历过的结点值设置为100001(不在数据范围内的数值)
遍历时如果遇到100001,则说明有环,如果遇到空则说明无环。最后记得处理空链表情况
public class Solution {
static final int MAX_VALUE=100001;
public boolean hasCycle(ListNode head) {
if(head==null) return false;
while(head.next!=null&&head.next.val!=MAX_VALUE){
head.val=MAX_VALUE;
head=head.next;
}
if(head.next==null) return false;
else return true;
}
}