判斷一個連結串列中是否有環
阿新 • • 發佈:2020-09-17
題目描述
判斷一個連結串列中是否有環
思路:
- 首先判斷頭結點是否為空
- 若是,代表連結串列不存在,返回false
- 若不是,繼續下一步判斷
- 定義一個快指標(走兩步)
- 定義一個慢指標(走1步)
- 一開始都是指向頭結點的
- 迴圈條件(快指標不為空,快指標的下一個不為空)
- 快指標不為空 契合偶數結點個數
- 快指標的下一個不為空 契合奇數結點個數
- 如果快指標追上慢指標,代表有環,同時指向同一個結點
圖片
程式碼實現
public class Solution { public boolean hasCycle(ListNode head) { if(head == null) return false;//如果頭結點為空,就不存在這個連結串列 ListNode fast = head; ListNode slow = head; while(fast != null && fast.next!= null){ fast = fast.next.next; slow = slow.next; if(fast == slow){ return true; } } return false; } }