LintCode(103)帶環連結串列 II
題目
給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點的值,如果沒有環,返回null。
您在真實的面試中是否遇到過這個題? Yes 樣例給出 -21->10->4->5, tail connects to node index 1,返回10
分析
上一題的進階。 首先,利用快慢指標判斷有無環,若遇到slow == fast時,跳出迴圈; 然後,調整fast=head,slow不變,此時slow與fast同步移動,直至再次相遇,即是連結串列中環的起始節點。Python程式碼
GitHub -- Python程式碼""" Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """ class Solution: """ @param head: The first node of the linked list. @return: The node where the cycle begins. if there is no cycle, return null """ def detectCycle(self, head): # write your code here if head == None or head.next == None: return None slow = head fast = head while fast != None and fast.next != None: slow = slow.next fast = fast.next.next if slow == fast: break if fast != None and fast == slow: fast = head while fast != slow: slow = slow.next fast = fast.next return fast return None
C++程式碼
GitHub -- C++程式碼/** 103 帶環連結串列 II 給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點的值,如果沒有環,返回null。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出 -21->10->4->5, tail connects to node index 1,返回10 */ /** * 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: The node where the cycle begins. * if there is no cycle, return null */ ListNode *detectCycle(ListNode *head) { // write your code here if(head == NULL || head->next ==NULL) { return NULL; }//if ListNode *slow = head, *fast = head; while(fast && fast->next) { slow = slow->next; fast = fast->next->next; if(slow == fast) { break; }//if }//while if(fast && fast == slow) { fast = head; while(fast != slow) { fast = fast->next; slow = slow->next; }//while return fast; }//if return NULL; } };
相關推薦
LintCode(103)帶環連結串列 II
題目 給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點的值,如果沒有環,返回null。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出 -21-&
LintCode(102) 帶環連結串列
題目 給定一個連結串列,判斷它是否有環。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出 -21->10->4->5, tail connects t
lintcode練習-103. 帶環連結串列 II
103. 帶環連結串列 II 給定一個連結串列,如果連結串列中存在環,則返回到連結串列中環的起始節點,如果沒有環,返回null。 樣例 給出 -21->10->4->5, tai
[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] Linked List Cycle(帶環連結串列)
描述 給定一個連結串列,判斷它是否有環。 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true。 這裡解釋下,題目的意思,在英文原題中,tail connects
C 資料結構迴圈連結串列(帶環連結串列)基本操作
經典迴圈連結串列之約瑟夫問題:標號從1到n的n個人圍成一個圈,從1開始計數到m的人退出圈子,然後從退出的下一個人開始接著從1計數,數到m的人後繼續退出,最後只剩下一個人,求剩下人的編號。這便是約瑟夫問題的模型。 經典迴圈連結串列之魔術師發牌問題:魔術師手中有A、2、3……J
lintcode帶環連結串列
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = va
LintCode:M-帶環連結串列
給定一個連結串列,判斷它是否有環。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true /** * Def
帶環連結串列-LintCode
給定一個連結串列,判斷它是否有環。 思想: 設定兩個指標(fast, slow),初始值都指向頭,slow每次前進一步,fast每次前進二步,如果連結串列存在環,則fast必定先進入環,而slow後
lintcode-帶環連結串列-102
給定一個連結串列,判斷它是否有環。 樣例 給出 -21->10->4->5, tail connects to node index 1,返回 true 挑戰
c實現功能(13)實現單向連結串列的簡要功能
#include <stdio.h> #include <stdlib.h> //利用結構體建立節點 struct list{ //建立資料域 int data; //建立指標域 struct list *next; }; //實現建立一個
資料結構-----------線性表(下篇)之雙向連結串列
//----------雙向連結串列的儲存結構------------ typedef struct DuLNode { ElemType date; struct DoLNode *prior; struct DoLNode *next; } DoLNode,*DoLinkList;
劍指offer——(10)兩個連結串列的第一個公共結點
圖解: 程式碼: public class Solution { /* 遍歷兩條連結串列得到各自的長度,長的先next兩條連結串列的長度差,然 後一起走next,如果有公共結點,此結點及之後的連結串列值都相同。 */ publi
領釦(LeetCode)迴文連結串列 個人題解
請判斷一個連結串列是否為迴文連結串列。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true 進階:你能否用 O(n) 時間複雜度和 O(1) 空間複雜度解決此題? 一個最暴力的做法,遍歷一
資料結構與演算法筆記(三)反轉部分連結串列
反轉部分連結串列 上次我們搞定了反轉單向連結串列和雙向連結串列的問題,但實際過程中我們可能只要反轉部分連結串列,在這種情況下我們需要對上次寫出的類增加一個叫做reverse_part_linklist的函式,傳入引數為兩個整數from和to,將from到to之間的節點進行反轉
劍指offer系列(16):反轉連結串列
題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 樣例 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 思路分析 雙指標法,pre指
javascript資料結構與演算法筆記(六):雙向連結串列
javascript資料結構與演算法筆記(六):雙向連結串列 一:簡介 二:ES6版DoublyLinkedList類 一:簡介 雙向連結串列和普通連結串列的區別在於,在連結串列中,一個節點只有鏈向下一個節點的連結,而
Leetcode題解中級篇之陣列和字串(8)奇偶連結串列
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-medium/31/linked-list/83/ 題目描述: 奇偶連結串列 給定一個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意
(C語言版)連結串列(一)——實現單向連結串列建立、插入、刪除等簡單操作(包含個人理解說明及註釋,新手跟著寫程式碼)
我學習了幾天資料結構,今天下午自己寫了一個單向連結串列的程式。我也是新手,所以剛開始學習資料結構的菜鳥們(有大牛們能屈尊看一看,也是我的榮幸)可以和我一起共同學習、討論,當然也很高興能指出我的錯誤,因為這是我們一起成長的過程。本程式碼包含我在寫程式時的一些個人理解的說