亀とウサギの競走-どのようにチェーン時計に環があると判断しますか?
1497 ワード
**
* @Author: Kerven Han
* @Date:
* @Describe:
*/
public class LinkListHasCycle {
public static boolean judgeHasCycle(LinkNode head) {
// false
if (null == head || null == head.getNext()) {
return false;
}
// ,
LinkNode fast = head;
LinkNode slow = head;
// , ,
// null
// fast null ,
while (fast != null && fast.getNext() != null) {
// : fast slow , head fast slow
// head , , fast slow 。
fast = fast.getNext().getNext();
slow = slow.getNext();
// , , , , ,
// , 1500 , , 。
if ( fast == slow ) {
return true;
}
}
return false;
}
}
public class LinkNode {
private int data;
private LinkNode next;
public LinkNode(int data){
this.data = data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public void setNext(LinkNode next) {
this.next = next;
}
public LinkNode getNext() {
return next;
}
}