1. 程式人生 > >LeetCode 141. 環形連結串列 C++

LeetCode 141. 環形連結串列 C++

給定一個連結串列,判斷連結串列中是否有環。

進階:
你能否不使用額外空間解決此題?

使用快慢指標的方法,設定兩個指標,如果快指標追上慢指標則有環,如果指向了NULL則無環。

要注意判斷快指標的next是否為NULL

* struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *L1,*L2;
        L1=head;
        L2=head;
        while(L1!=NULL && L2 != NULL && L1->next != NULL)
        {
            L1 = L1->next->next;
            L2 = L2->next;
            if(L1 == L2)
                return true;
        }
        return false;
    }
};

相關推薦

leetcode 141. 環形連結串列 C語言版

給定一個連結串列,判斷連結串列中是否有環。 bool hasCycle(struct ListNode *head) { struct ListNode *p = head,*q = head; if(p == NULL) return false; el

LeetCode 141. 環形連結串列 C++

給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題? 使用快慢指標的方法,設定兩個指標,如果快指標追上慢指標則有環,如果指向了NULL則無環。 要注意判斷快指標的next是否為NULL * struct ListNode { *

leetcode- 141. 環形連結串列

題目 給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題? 思路 判斷連結串列是否存在環,採用快慢連結串列,low = low.next ; high = high.next.next ; 如果連結串列有環,那迴圈一段時間後,必有l

leetCode——141. 環形連結串列

題目 給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題?  解題思路 建立兩個指標,一個跑的快,一個跑的慢。 當跑的快的和跑的慢的到一個位置說明成環, 否則不成環。  程式碼實現  /** * Definition for s

[Leetcode] 141. 環形連結串列 java

給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題? /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode

LeetCode[141].環形連結串列

要求 給定一個連結串列,判斷連結串列中是否有環。 程式碼 思路 使用雙指標,快指標和慢指標,快指標一次移動兩個元素,慢指標一次移動一個元素. 若非環形,則快指標先到達末尾進行判斷. 若環形,則當慢指標即將回到起點時,快指標已經與慢指標相遇.設環形連結串列長度為N

LeetCode 141——環形連結串列

1. 題目 2. 解答 2.1 方法 1 定義快慢兩個指標,慢指標每次前進一步,快指標每次前進兩步,若連結串列有環,則快慢指標一定會相遇。 /** * Definition for singly-linked list. * struct ListNode { * int val;

LeetCode 141. 環形連結串列

        給定一個連結串列,判斷連結串列中否有環。補充:        你是否可以不用額外空間解決此題?解題思路:        一開始的程式碼只針對連結串列的頭尾迴圈的特殊情況,沒有考慮在中間成環,中間成環的沒想出不用額外空間的方法,所以就直接加了判定迴圈次數然後過了。看了一下別人的程式碼思路,就是用

leetcode 141 判斷連結串列是否有環(C++和python實現)

【解題思路】 方法一:使用set來判重,每到一個新節點,判斷set中有沒有這個節點。時間複雜度為O(n*1),1代表每次查set。 方法二:龜兔賽跑。快和慢兩個指標,如果有環,則一定會相遇。具體見下面的程式碼:  【C++】 cla

LeetCode141. 環形連結串列(Linked List Cycle)

【 英文練習 | 中文練習 】 題目描述: 給定一個連結串列,判斷連結串列中是否有環。 解題思路: 一種方法可以使用 Hash Table ,判斷該結點之前是否遇到過;更優的方法是使用雙指標,一個指標每次移動一個結點,一個指標每次移動兩個結點,如果存在環,那麼這兩個指標一定會相遇

LeetCode】#141環形連結串列(Linked List Cycle)

【LeetCode】#141環形連結串列(Linked List Cycle) 題目描述 給定一個連結串列,判斷連結串列中是否有環。 為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該連結串列

leetcode】Python實現-141.環形連結串列

141.環形連結串列 描述 給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題? 我…遍歷了以後超出時間限制,於是看大家總結的方法。一個就是設定兩個指標slow和fast,一個步長為1,一個步長為2進行遍歷

141,環形連結串列

給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題?   用快慢指標,若相遇,則有環 /**  * Definition for singly-linked list.  * class ListNode {  *

領釦——141環形連結串列(快慢指標)

給定一個連結串列,判斷連結串列中是否有環。 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x)

LeetCode題目--環形連結串列(python實現)

題目 給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題?   python程式碼實現: # Definition for singly-linked list. # class ListNode(object): # def

leetcode 707設計連結串列 c語言實現

這道題我用c寫的,寫過程中出現了好多bug,唉,還是對連結串列不是很熟,比如在插入結點時,如果是首結點該如何處理。好在最後還能正常寫出來了~~~ 題目描述 設計連結串列的實現。您可以選擇使用單鏈表或雙鏈表。單鏈表中的節點應該具有兩個屬性:val 和 next。val 是當前節點的值,

141. 環形連結串列

題目 程式碼 /** * Definition for singly-linked list. * struct ListNode { * int val; * Li

leetcode 61 旋轉連結串列 c++

題目: 給定一個連結串列,旋轉連結串列,將連結串列每個節點向右移動 k 個位置,其中 k 是非負數。 示例1: 輸入: 1->2->3->4->5->NULL, k = 2 輸出: 4->5->1->2->

leetcode環形連結串列及拓展

                                              環形連結串列及拓展 一、要求 給定一個連結串列,判斷連結串列中是否有環。 進階: 你能否不使用額外空間解決此題? 節點類: class ListNode {

LeetCode 142 環形連結串列 II python

題目 給定一個連結串列,返回連結串列開始入環的第一個節點。 如果連結串列無環,則返回 null。 為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該連結串列中沒有環。 說明:不允許修改給定