1. 程式人生 > >lintcode帶環連結串列

lintcode帶環連結串列

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */


class Solution {
public:
    /*
     * @param head: The first node of linked list.
     * @return: True if it has a cycle, or false
     */
    bool hasCycle(ListNode * head) {
        // write your code here
        ListNode *fast=head,*slow=head;
        while(fast&&fast->next)
        {
            fast=fast->next->next;
            slow=slow->next;
            if(slow==fast)
            return true;
        }
        return false;
    }
};

這裡還有個求環形入口的問題,日後有時間再整理

相關推薦

lintcode連結串列

/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = va

[LintCode] 連結串列 II Linked List Cycle II

給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點的值,如果沒有環,返回null。 樣例 給出 -21->10->4->5, tail connects to node index 1,返回10 挑戰 不使用額外的空

LintCode: 連結串列 + 連結串列 II

1. 帶環連結串列描述給定一個連結串列,判斷它是否有環。樣例給出 -21->10->4->5, tail connects to node index 1,返回 true挑戰不要使用額外的空間思路: 可以先看上面這個圖,a 是 起點,b 是 環的起點,b到d

lintcode-連結串列-102

給定一個連結串列,判斷它是否有環。 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true 挑戰

[LintCode] Linked List Cycle(連結串列

描述 給定一個連結串列,判斷它是否有環。 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true。 這裡解釋下,題目的意思,在英文原題中,tail connects

LintCode(103)連結串列 II

題目 給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點的值,如果沒有環,返回null。 您在真實的面試中是否遇到過這個題?  Yes 樣例 給出 -21-&

LintCode:M-連結串列

給定一個連結串列,判斷它是否有環。 您在真實的面試中是否遇到過這個題?  Yes 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true /** * Def

lintcode練習-103. 連結串列 II

103. 帶環連結串列 II 給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點,如果沒有環,返回null。 樣例 給出 -21->10->4->5, tai

LintCode(102) 連結串列

題目 給定一個連結串列,判斷它是否有環。 您在真實的面試中是否遇到過這個題?  Yes 樣例 給出 -21->10->4->5, tail connects t

連結串列-LintCode

給定一個連結串列,判斷它是否有環。 思想: 設定兩個指標(fast, slow),初始值都指向頭,slow每次前進一步,fast每次前進二步,如果連結串列存在環,則fast必定先進入環,而slow後

C 資料結構迴圈連結串列連結串列)基本操作

經典迴圈連結串列之約瑟夫問題:標號從1到n的n個人圍成一個圈,從1開始計數到m的人退出圈子,然後從退出的下一個人開始接著從1計數,數到m的人後繼續退出,最後只剩下一個人,求剩下人的編號。這便是約瑟夫問題的模型。 經典迴圈連結串列之魔術師發牌問題:魔術師手中有A、2、3……J

單鏈表面試題系列之連結串列的入口點

***單鏈表操作之帶環連結串列的入口點*** //  本篇博文闡述如何找到帶環連結串列的入口點,那麼,首先有必要闡述一下什麼是帶環連結串列?如何判斷連結串列是否帶環? 帶環連結串列: 即連結串列

連結串列得幾個問題

1、判斷一個連結串列是否有環,如果有環,則返回入環的第一個節點,否則返回null 如果一個連結串列有環,遍歷一個連結串列便永遠不會到達null,否則必定會到達null。設定兩個指標,剛開始都指向頭節點,遍歷時,一個指標每次前進一步,我們稱之為慢指標,另一個每次前進兩步,稱之

連結串列及以此為基礎的一些問題

連結串列有環及其延伸問題         首先,問題涉及的有環連結串列是指連結串列的尾節點不是null,而是指向連結串列中的其中一個節點,從而使得連結串列的其中一段是迴圈的,如果用圖的話可以得到這樣的資料結構: 那麼基於這樣的資料結構有一系列

約瑟夫連結串列實現

寫的蠻繁瑣的,而且中間還出現了些問題 #include <iostream> #include <stdio.h> #include <cstring> using namespace std; typedef struct node { i

雙向約瑟夫連結串列實現

#include<stdio.h> #include<stdlib.h> const int N = 1000; int m, n, k; struct people { int id; people *last, *ne

Lintcode 35.翻轉連結串列

思路 剛開始時沒注意這個問題時不帶頭結點的,即head指向第一個元素 基本思路還是從第二個元素依次往前加 但是要注意特殊情況 — 連結串列為空或者只有一個元素的時候特殊處理 程式碼如下 #include <iostream> using names

LintCode 452.刪除連結串列中的元素

思路 用前一個節點常規刪除操作 或者由前一題的啟發直接覆蓋 /** * Definition of singly-linked-list: * class ListNode { * public: * int val; * ListN

連結串列起點

用兩個指標,一個快指標一次走兩步,一個慢指標一次走一步。快慢指標可以重合表示連結串列有環,此時距離環起點的距離和起點距離環起點的距離相等。 #include "bits/stdc++.h" using namespace std; struct List { List* next; }; Li

LintCode刪除排序連結串列中的重複數字 II

public static ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) { return head; } el