刷題No26. linked-list-cycle(環形鏈表)(java)【鏈表】

題目:判斷給定的鏈表中是否有環

思路:設置快慢指針,剛開始快慢指針同時指向某一個節點,然後進行next,當快慢指針再次相遇的時候,說明該鏈表有環。

代碼:

package com.company;

public class TestNo26 {
    static class ListNode{
        int val;
        ListNode next;
        ListNode(int x){
            val = x;
            next = null;
        }
    }
    public static void main(String[] args) {
        ListNode head = new ListNode(3);
        head.next = new ListNode(4);
        head.next.next = new ListNode(7);
        head.next.next.next = new ListNode(6);
        head.next.next.next.next = head;
        TestNo26 t = new TestNo26();
        System.out.println(t.hasCycle(head));

    }
    public boolean hasCycle(ListNode head) {
        //快指針
        ListNode fast = head;
        //慢指針
        ListNode slow = head;
        while (fast != null && slow != null){
            fast = fast.next.next;
            slow = slow.next;
            //當快指針與慢指針相遇的時候,則有環。
            if(fast == slow){
                return true;
            }
        }
        return false;
    }
}

 

發佈了64 篇原創文章 · 獲贊 13 · 訪問量 4376
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章