Leetcode刷題java之142. 環形鏈表 II

執行結果:

通過

顯示詳情

執行用時 :0 ms, 在所有 Java 提交中擊敗了100.00% 的用戶

內存消耗 :37.5 MB, 在所有 Java 提交中擊敗了5.03%的用戶

題目:

給定一個鏈表,返回鏈表開始入環的第一個節點。 如果鏈表無環,則返回 null。

爲了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。

說明:不允許修改給定的鏈表。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/linked-list-cycle-ii
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

思路:

快慢指針

2*(x+y)=x+2*y+z

x=z

代碼:

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode slow=head;
        ListNode fast=head;
        do
        {
            if(fast==null||fast.next==null)
            {
                return null;
            }else
            {
                slow=slow.next;
                fast=fast.next.next;
            }
        }while(slow!=fast);
        fast=head;
        while(slow!=fast)
        {
            fast=fast.next;
            slow=slow.next;
        }
        return fast;
    }
}

 

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