給定一個(gè)鏈表,判斷鏈表中是否有環(huán)。
為了表示給定鏈表中的環(huán),我們使用整數(shù) pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環(huán)。
輸入:head = [3,2,0,-4]
輸出:true
解釋:鏈表中有一個(gè)環(huán),其尾部連接到第二個(gè)節(jié)點(diǎn)。
public static void main(String[] args) {
ListNode node3 = new ListNode(3);
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2,node1);
node3.next = node2;
node1.next = node3;
ListNode node4 = new ListNode(4,node3);
System.out.println(listHasCycle(node4));
}
public static Boolean listHasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
//fast走兩步,slow走一步,若相遇,則必存在環(huán)
while (fast != null && fast.next !=null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
return true;
}
}
return false;
}
private static class ListNode {
private int val;
private ListNode next;
public ListNode(int val) {
this.val = val;
}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
