国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode:142. 環(huán)形鏈表 II

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode:142. 環(huán)形鏈表 II。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??道阻且長,行則將至。??

??算法,不如說它是一種思考方式??


算法專欄: ????123


一、??142. 環(huán)形鏈表 II

  • 題目描述:給定一個(gè)鏈表的頭節(jié)點(diǎn) head,返回鏈表開始入環(huán)的第一個(gè)節(jié)點(diǎn)。 如果鏈表無環(huán),則返回 null。
    如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評測系統(tǒng)內(nèi)部使用整數(shù) pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。如果 pos 是 -1,則在該鏈表中沒有環(huán)。注意:pos 不作為參數(shù)進(jìn)行傳遞,僅僅是為了標(biāo)識鏈表的實(shí)際情況。
    不允許修改 鏈表。

  • 來源:力扣(LeetCode)

  • 難度:中等

  • 提示:
    鏈表中節(jié)點(diǎn)的數(shù)目范圍在范圍 [0, 104] 內(nèi)
    -105 <= Node.val <= 105
    pos 的值為 -1 或者鏈表中的一個(gè)有效索引

  • 示例 1
    LeetCode:142. 環(huán)形鏈表 II
    輸入:head = [3,2,0,-4], pos = 1
    輸出:返回索引為 1 的鏈表節(jié)點(diǎn)
    解釋:鏈表中有一個(gè)環(huán),其尾部連接到第二個(gè)節(jié)點(diǎn)。
    示例 2
    輸入:head = [1,2], pos = 0
    輸出:返回索引為 0 的鏈表節(jié)點(diǎn)
    解釋:鏈表中有一個(gè)環(huán),其尾部連接到第一個(gè)節(jié)點(diǎn)。
    示例 3
    輸入:head = [1], pos = -1
    輸出:返回 null
    解釋:鏈表中沒有環(huán)。

  • 進(jìn)階:你是否可以使用 O(1) 空間解決此題?

??解題

1.HashSet

HashSet是一種不重復(fù)的集合。
方法就是遍歷鏈表,判斷:集合是否存在這個(gè)節(jié)點(diǎn) || 節(jié)點(diǎn)為空
?① 否:存入集合中。
?② 是:該節(jié)點(diǎn)就是所求。

  • code
public class Solution {
    public ListNode detectCycle(ListNode head) {
        Set<ListNode> NodeSet=new HashSet<>();
        ListNode p=head;
        while(!NodeSet.contains(p) && p!=null){//節(jié)點(diǎn)判斷是否已經(jīng)被存入(入環(huán)首節(jié)點(diǎn)),或者 no 環(huán)
            NodeSet.add(p);
            p=p.next;
        }
        return p;        
    }
}

LeetCode:142. 環(huán)形鏈表 II

2.雙指針

定義兩個(gè)指針:快指針 fast、慢指針 slow。fast 每次走 2 步,slow 每次走 1 步。

  1. 相遇
    如果鏈表有環(huán),那么 fastslow 肯定會相遇;
  • 為什么
指針 起點(diǎn) 步長 k
fast a 2 (a+2*k)
slow b 1 (b+k)

那么假設(shè)環(huán)長度是 N;
如果 fastslow 可以相遇則有:(a + 2 * k) = (b + k) + r * N ;
即:a + k = b + r * N ;對于這樣的方程,取任意a b 可以找到多組解釋,
所以 有環(huán)則必定相遇。
?

  1. 找到入環(huán)節(jié)點(diǎn)
    對于相遇的節(jié)點(diǎn) fast=slow,我們在取節(jié)點(diǎn) p指向 head,讓 pslow 同步遍歷,第一次相遇節(jié)點(diǎn)為所求節(jié)點(diǎn)。
  • why ?
    LeetCode:142. 環(huán)形鏈表 II

對于fast走到相遇的位置:a + b + n(b + c);
slow走到相遇的位置:a + b + m(b + c),其中(m < n);

而slow每次走的是fast的一半,所以有:2 * [a + b + m(b + c)] = a + b + n(b + c);
a+b = k*(b+c),
移動(dòng)變形公式:a = r * (b+c) + c ,其中(r=k-1);
結(jié)合上圖看,從 slowhead 同步遍歷,最后在環(huán)的入口相遇。

  • code
public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode fast=head,slow=head;
        while(true){
            if(fast==null||fast.next==null){ //不存在環(huán),fast當(dāng)然率先 null               
                break;
            }

            fast=fast.next.next;// 2
            slow=slow.next;

            if(fast==slow){// fast、slow 相遇
                fast=head;
                while(fast!=slow){
                    fast=fast.next;
                    slow=slow.next;
                }
                return fast;
            }
        }
        return null;
    }
}

LeetCode:142. 環(huán)形鏈表 II
空間復(fù)雜度 - O(1)


?? 人生得意須盡歡,莫使金樽空對月。

返回第一頁。?


?物有本末,事有終始,知所先后。??

LeetCode:142. 環(huán)形鏈表 II

???????我的CSDN???????? 文章來源地址http://www.zghlxwxcb.cn/news/detail-465710.html

到了這里,關(guān)于LeetCode:142. 環(huán)形鏈表 II的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • LeetCode刷題:142. 環(huán)形鏈表 II

    LeetCode刷題:142. 環(huán)形鏈表 II

    題目: 是否獨(dú)立解決: 否,參考了解題思路解決問題,思考了用快慢指針,棧,統(tǒng)計(jì)鏈表數(shù)量定位尾巴節(jié)點(diǎn)(因?yàn)槭黔h(huán)形鏈表所以是死循環(huán),鏈表數(shù)量用while循環(huán)統(tǒng)計(jì)不出來)都沒解決 解題思路:這題其實(shí)和環(huán)形鏈表一樣的解題思路,用哈希set將數(shù)據(jù)都存儲進(jìn)去,如果發(fā)現(xiàn)

    2024年01月21日
    瀏覽(15)
  • ?LeetCode解法匯總142. 環(huán)形鏈表 II

    ?LeetCode解法匯總142. 環(huán)形鏈表 II

    https://github.com/September26/java-algorithms 給定一個(gè)鏈表的頭節(jié)點(diǎn) ? head ?,返回鏈表開始入環(huán)的第一個(gè)節(jié)點(diǎn)。? 如果鏈表無環(huán),則返回? null 。 如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過連續(xù)跟蹤? next ?指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評測系統(tǒng)內(nèi)部使用整數(shù)?

    2024年02月14日
    瀏覽(20)
  • LeetCode[141] [142] 環(huán)形鏈表I II

    141. 環(huán)形鏈表 - 力扣(LeetCode) 142. 環(huán)形鏈表 II - 力扣(LeetCode) 題解: 快慢指針題 從head開始,一個(gè)快指針,一次前進(jìn)兩步,一個(gè)慢指針,一次走一步 如果沒有環(huán),則快指針首先到達(dá)鏈表尾部, 如果有環(huán),快慢指針肯定能相遇即fast=slow 141代碼: 對于142需要環(huán)的起點(diǎn),需要

    2024年02月04日
    瀏覽(22)
  • [LeetCode]-160. 相交鏈表-141. 環(huán)形鏈表-142.環(huán)形鏈表II-138.隨機(jī)鏈表的復(fù)制

    [LeetCode]-160. 相交鏈表-141. 環(huán)形鏈表-142.環(huán)形鏈表II-138.隨機(jī)鏈表的復(fù)制

    目錄 160.相交鏈表 ?題目 思路 代碼? 141.環(huán)形鏈表 ?題目 思路 代碼 142.環(huán)形鏈表II 題目 思路 代碼 160. 相交鏈表 - 力扣(LeetCode) https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 給你兩個(gè)單鏈表的頭節(jié)點(diǎn)? headA ?和? headB ?,請你找出并返回兩個(gè)單鏈表相交的起始節(jié)點(diǎn)

    2024年02月05日
    瀏覽(47)
  • leetcode 141.環(huán)形鏈表 I - 142.環(huán)形鏈表 II 代碼及指針相遇證明問題

    leetcode 141.環(huán)形鏈表 I - 142.環(huán)形鏈表 II 代碼及指針相遇證明問題

    給你一個(gè)鏈表的頭節(jié)點(diǎn) head ,判斷鏈表中是否有環(huán)。如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 如果鏈表中存在環(huán) ,則返回 true 。 否則,返回 false 。 思路: 快慢指針問題 。我們可以聲明一個(gè) fast 指針(一次走兩步),聲明一個(gè) slow

    2024年02月12日
    瀏覽(22)
  • 代碼隨想錄 Leetcode142. 環(huán)形鏈表 II

    代碼隨想錄 Leetcode142. 環(huán)形鏈表 II

    ? ? ? ? 雙指針解決百分之99的鏈表題

    2024年01月19日
    瀏覽(24)
  • 【刷題專欄—突破思維】LeetCode 142. 環(huán)形鏈表 II

    【刷題專欄—突破思維】LeetCode 142. 環(huán)形鏈表 II

    前言 :本篇博客將講解三個(gè)OJ題,前兩個(gè)作為鋪墊,最后完成環(huán)形鏈表的節(jié)點(diǎn)的尋找 題目鏈接:LeetCode—相交鏈表 題目描述: 給你兩個(gè)單鏈表的頭節(jié)點(diǎn) headA 和 headB ,請你找出并返回兩個(gè)單鏈表相交的起始節(jié)點(diǎn)。如果兩個(gè)鏈表不存在相交節(jié)點(diǎn),返回 null 。 圖示兩個(gè)鏈表在節(jié)

    2024年02月05日
    瀏覽(19)
  • LeetCode - 142. 環(huán)形鏈表 II (C語言,快慢指針,配圖)

    LeetCode - 142. 環(huán)形鏈表 II (C語言,快慢指針,配圖)

    ? ? ? ? 如果你對快慢指針,環(huán)形鏈表有疑問,可以參考下面這篇文章,了解什么是環(huán)形鏈表后,再做這道題會非常簡單,也更容易理解下面的圖片公式等。 LeetCode - 141. 環(huán)形鏈表 (C語言,快慢指針,配圖)-CSDN博客 ? ? ? ? 上述文章總結(jié): 如果一個(gè)鏈表是環(huán)形鏈表,采用

    2024年02月05日
    瀏覽(91)
  • 每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    142. 環(huán)形鏈表 II - 力扣(LeetCode) 用哈希記錄走過的節(jié)點(diǎn)即可 146. LRU 緩存 - 力扣(LeetCode) O ( 1 ) O(1) O ( 1 ) 地查找并修改kv結(jié)構(gòu),用unordered_map即可解決 問題是題目要求:哈希表容量有限,超出容量時(shí),將刪除最久未訪問的kv 那么關(guān)鍵就在于:如何用數(shù)據(jù)結(jié)構(gòu)表示訪問的先后順

    2024年04月16日
    瀏覽(26)
  • 單鏈表OJ題:LeetCode--142.環(huán)形鏈表Ⅱ(判斷第一次入環(huán)的節(jié)點(diǎn))

    單鏈表OJ題:LeetCode--142.環(huán)形鏈表Ⅱ(判斷第一次入環(huán)的節(jié)點(diǎn))

    朋友們、伙計(jì)們,我們又見面了,本期來給大家解讀一下LeetCode中第142道單鏈表OJ題,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! ? 數(shù)據(jù)結(jié)構(gòu)與算法專欄 : 數(shù)據(jù)結(jié)構(gòu)與算法 個(gè)? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 Le

    2024年02月08日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包