题解 | #判断链表中是否有环#
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
答题
声明两个指针,一个指针每次前进一个节点,另外一个指针每次前进两个节点,如果链表中有环那么始终有相遇的一次
class Solution {
public boolean hasCycle(ListNode head) {
ListNode node01=head;
ListNode node02=head;
while (head!=null){
node01=node01.next;
if(node01==null){
return false;
}
if(node02.next==null){
return false;
}
node02=node02.next.next;
if(node02==null){
return false;
}
if(node01.val==node02.val){
return true;
}
}
return false;
}
}
public class test02{
public static void main(String[] args) {
Solution solution=new Solution();
ListNode head=new ListNode(0);
ListNode tail=head;
ListNode node2=null;
for (int i = 1; i <= 3; i++) {
tail.val=i;
if(i==2){
node2=tail;
}
if (i!=3)
{
tail.next = new ListNode(0);
tail=tail.next;
}
}
tail.next = new ListNode(4);
tail=tail.next;
tail.next=node2;
// head.display(head);
boolean hasCycle = solution.hasCycle(head);
System.out.println("是否有环:"+hasCycle);
}
}