leetCode——141. 環形連結串列
阿新 • • 發佈:2018-12-11
題目
給定一個連結串列,判斷連結串列中是否有環。
進階: 你能否不使用額外空間解決此題?
解題思路
- 建立兩個指標,一個跑的快,一個跑的慢。
- 當跑的快的和跑的慢的到一個位置說明成環, 否則不成環。
程式碼實現
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public boolean hasCycle(ListNode head) { // 建立兩個指標 一個跑的快 一個跑的慢 當跑的快的和跑的慢的到一個位置 說明成環 否則不成環 ListNode quick = head; // 快指標 ListNode slow = head; // 慢指標, 兩指標同一起點 // 迴圈結束條件,任意一指標指向null while (quick != null && quick.next != null) { quick = quick.next.next; slow = slow.next; if (quick == slow) { return true; } } // 快的沒有追過慢的一圈則不成環,返回false return false; } }