【LeetCode】141. 環形連結串列(Linked List Cycle)
題目描述: 給定一個連結串列,判斷連結串列中是否有環。
解題思路: 一種方法可以使用 Hash Table ,判斷該結點之前是否遇到過;更優的方法是使用雙指標,一個指標每次移動一個結點,一個指標每次移動兩個結點,如果存在環,那麼這兩個指標一定會相遇。
public boolean hasCycle(ListNode head) {
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
return true;
}
相關推薦
【LeetCode】141. 環形連結串列(Linked List Cycle)
【 英文練習 | 中文練習 】 題目描述: 給定一個連結串列,判斷連結串列中是否有環。 解題思路: 一種方法可以使用 Hash Table ,判斷該結點之前是否遇到過;更優的方法是使用雙指標,一個指標每次移動一個結點,一個指標每次移動兩個結點,如果存在環,那麼這兩個指標一定會相遇
【LeetCode】#142環形連結串列II(Linked List Cycle II)
【LeetCode】#142環形連結串列II(Linked List Cycle II) 題目描述 給定一個連結串列,返回連結串列開始入環的第一個節點。 如果連結串列無環,則返回 null。 為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索
【LeetCode】#141環形連結串列(Linked List Cycle)
【LeetCode】#141環形連結串列(Linked List Cycle) 題目描述 給定一個連結串列,判斷連結串列中是否有環。 為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該連結串列
LeetCode 142:環形連結串列 II Linked List Cycle II
給定一個連結串列,返回連結串列開始入環的第一個節點。 如果連結串列無環,則返回 null。 為了表示給定連結串列中的環,我們使用整
【LeetCode】142. 環形連結串列 II
題目描述 給定一個連結串列,返回連結串列開始入環的第一個節點。 如果連結串列無環,則返回 null。 說明:不允許修改給定的連結串列。 進階: 你能否不使用額外空間解決此題? 解決方法 在141. 環
【leetcode】迴文連結串列(Palindrome Linked List)【python】三種方法
題目連結 時間複雜度O(N),空間複雜度O(N) class ListNode: def __init__(self, x): self.val = x se
【LeetCode題解】61_旋轉連結串列(Rotate-List)
目錄 描述 解法:雙指標 思路 Java 實現 Python 實現 複雜度分析 描述 給定一個連結串列,旋轉連結串列,將連結串列每個節點向右移動 k 個位置,其中 k 是非負數。 示例 1: 輸入: 1->2->3->4-
【LeetCode】 237. 刪除連結串列中的節點
1.題目 請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 – head = [4,5,1,9],它可以表示為: 4 -> 5 -> 1 -> 9 示例 1: 輸
領釦——141環形連結串列(快慢指標)
給定一個連結串列,判斷連結串列中是否有環。 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x)
【原】手寫連結串列(C++)
1、連結串列基本概念以及注意事項 2、列印連結串列 3、刪除連結串列節點 4、連結串列中倒數第k個節點 5、反轉連結串列 6、合併兩個排序的連結串列 7、兩個連結串列當中的第一個公共節點 【檢視之前筆記】 在做上面幾道題之前,我們先給出一個基本連結串列。
【LeetCode】147. 對連結串列進行插入排序 結題報告 (C++)
題目描述: 對連結串列進行插入排序。 插入排序的動畫演示如上。從第一個元素開始,該連結串列可以被認為已經部分排序(用黑色表示)。 每次迭代時,從輸入資料中移除一個元素(用紅色表示),並原地將其插入到已排好序的連結串列中。 插入排序演算法: 插入排序是迭代的,
【LeetCode】19. 刪除連結串列的倒數第N個節點
題目描述 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數
【LeetCode】61. 旋轉連結串列
題目描述 給定一個連結串列,旋轉連結串列,將連結串列每個節點向右移動 k 個位置,其中 k 是非負數。 示例 輸入: 1->2->3->4->5->NULL, k = 2
【LeetCode】237. 刪除連結串列中的節點
題目描述 請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 – head = [4,5,1,9],它可以表示為: 4 -> 5 -
【LeetCode】147. 對連結串列進行插入排序
插入排序演算法: 插入排序是迭代的,每次只移動一個元素,直到所有元素可以形成一個有序的輸出列表。 每次迭代中,插入排序只從輸入資料中移除一個待排序的元素,找到它在序列中適當的位置,並將其插入。 重複直到所有輸入資料插入完為止。 方法1:嚴格按照演算法說明,在原始列表中進
【LeetCode】143.重排連結串列
給定一個單鏈表 L:L0→L1→…→Ln-1→Ln , 將其重新排列後變為: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。 解題思路: 首先想到的是找到要插入的元素,壓入堆疊,彈出時剛好為期望的順序,然後插入對應
【LeetCode】#148排序連結串列(Sort List)
【LeetCode】#148排序連結串列(Sort List) 題目描述 在 O(n log n) 時間複雜度和常數級空間複雜度下,對連結串列進行排序。 示例 示例 1: 輸入: 4->2->1->3 輸出: 1->2->3->4
【LeetCode】206.反轉連結串列
反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 思路: class Solution { public ListN
【LeetCode】148. 排序連結串列
在 O(n log n) 時間複雜度和常數級空間複雜度下,對連結串列進行排序。 根據時間複雜度選擇歸併排序,解題思路如下: 1.使用歸併排序前,找到中間節點pmiddle,因為是連結串列排序所以我們要找到的是中間節點的前繼節點,使用快慢指標可以完成,需要注意的是
【LeetCode】92. 反轉連結串列 II 結題報告 (C++)
題目描述: 反轉從位置 m 到 n 的連結串列。請使用一趟掃描完成反轉。 說明: 1 ≤ m ≤ n ≤ 連結串列長度。 示例: 輸入: 1->2->3->4->5->NULL, m = 2, n = 4 輸出: 1->4-&g