题解 | #判断链表中是否有环#
判断链表中是否有环
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); } }