解题思路:
分别创建一个快指针和慢指针,快指针一次往后移动两个位置,慢指针slow和快指针fast,慢指针和快指针同时走,慢指针一次走一步,快指针一次走两步,如果是带环的链表,那么快慢指针会相遇,如果不是,就不会相遇.
public class Cycle {
static class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
public boolean hasCycle(ListNode head){
//创建快慢指针来判断
ListNode fast=head;
ListNode slow=head;
while(fast!=null&&fast.next!=null){
slow=slow.next;
fast=fast.next.next;
if(fast==slow){
//判断两个节点是否是想同节点
return true;
}
}
return false;
}
}
}