package suanfa.list;
import java.util.List;
//快慢指针 慢指针一次走一个,快指针每次走两个,如果有环 则一定会出现 slow==fast
public class HasCycle {
public static void main(String[] args) {
ListNode head = new ListNode();
ListNode node2 = new ListNode();
ListNode node3 = new ListNode();
ListNode node4 = new ListNode();
ListNode node5 = new ListNode();
ListNode node6 = new ListNode();
head.setVal(1);
node2.setVal(2);
node3.setVal(3);
node4.setVal(4);
node5.setVal(5);
node6.setVal(6);
head.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(node5);
node5.setNext(node6);
node6.setNext(node3);
System.out.println(hasCycle(head));
}
public static Boolean hasCycle(ListNode head) {
if (head == null) {
return Boolean.FALSE;
}
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
if (slow == fast) {
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
static class ListNode {
int val;
ListNode next;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
}}

京公网安备 11010502036488号