Linked List Cycle 题目:https://leetcode.com/problems/linked-list-cycle/
判断一个单链表有没有环,不能使用额外的空间
解题思路:使用快慢指针,一个快指针每次走两格,一个慢指针,每次走一格,如果快慢指针指针指向同一个元素,就说明单链表有环,如果一直没有找到,快指针走到链表的末尾,说明链表没有环。
public static void main(String[] args) {
ListNode listNode1=new ListNode(1);
ListNode listNode2=new ListNode(2);
ListNode listNode3=new ListNode(3);
ListNode listNode4=new ListNode(4);
listNode1.next=listNode2;
listNode2.next=listNode3;
listNode3.next=listNode4;
listNode4.next=listNode2;
boolean flag = hasCycle(listNode1);
System.out.println(flag);
}
public static boolean hasCycle(ListNode head) {
ListNode slow=head;
ListNode fast=head;
while(fast!=null && fast.next!=null){
slow=slow.next;
fast=fast.next.next;
if(slow==fast){
return true;
}
}
return false;
}