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

【數(shù)據(jù)結構】LeetCode升級版的環(huán)形鏈表,復制帶隨機指針的鏈表

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)結構】LeetCode升級版的環(huán)形鏈表,復制帶隨機指針的鏈表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

? ? ? 一、升級版的環(huán)形鏈表

? ? ? ? ? 1、題目說明

? ? ? ? ? 2、題目解析

? ? ??二、復制帶隨機指針的鏈表

? ? ? ? ??1、題目說明

? ? ? ? ? 2、題目解析

?


?

一、升級版的環(huán)形鏈表

?1、題目說明

題目鏈接:升級版的環(huán)形鏈表?

給定一個鏈表的頭節(jié)點 head ,返回鏈表開始入環(huán)的第一個節(jié)點。?如果鏈表無環(huán),則返回NULL。

如果鏈表中有某個節(jié)點,可以通過連續(xù)跟蹤 next 指針再次到達,則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評測系統(tǒng)內部使用整數(shù) pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。如果 pos 是 -1 ,則在該鏈表中沒有環(huán)。注意:pos 不作為參數(shù)進行傳遞,僅僅是為了標識鏈表的實際情況。

不允許修改?鏈表。

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

?2、題目解析

這個題的解題思路比較巧妙,經過上一篇博客中環(huán)形鏈表的相交點問題,在這里還是設置快慢指針,讓慢指針從鏈表起始位置開始遍歷鏈表,同時讓快指針從判環(huán)時相遇點的位置開始繞環(huán)運行,兩個指針都是每次均走一步,最終肯定會在入口點的位置相遇。

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

快指針和慢指針還有關系:

快指針是慢指針的2倍--->2*(L+X) = L+nR+X?

所以,L = nR - X。(n的大小取決于環(huán)的大小,環(huán)越小n越大)?

結論:一個指針從鏈表起始位置運行,一個指針從相遇點位置繞環(huán),每次都走一步,兩個指針最終會在入口處相遇。

struct ListNode *detectCycle(struct ListNode *head) 
{
    struct ListNode* fast = head,*slow = head;
    while(fast && fast->next)
    {
        slow = slow->next;
        fast = fast->next->next;
        if(slow == fast)
        {
            struct ListNode* meet = slow;
            while(head != meet)
            {
                head = head->next;
                meet = meet->next;
            }
            return meet;
        }
    }
    return  NULL;
}

二、復制帶隨機指針的鏈表(較難)

?1、題目說明

題目鏈接:復制帶隨機指針的鏈表

給你一個長度為 n 的鏈表,每個節(jié)點包含一個額外增加的隨機指針 random ,該指針可以指向鏈表中的任何節(jié)點或空節(jié)點。

構造這個鏈表的深拷貝。?深拷貝應該正好由 n 個全新節(jié)點組成,其中每個新節(jié)點的值都設為其對應的原節(jié)點的值。新節(jié)點的 next 指針和 random 指針也都應指向復制鏈表中的新節(jié)點,并使原鏈表和復制鏈表中的這些指針能夠表示相同的鏈表狀態(tài)。復制鏈表中的指針都不應指向原鏈表中的節(jié)點?。

用一個由 n 個節(jié)點組成的鏈表來表示輸入/輸出中的鏈表。每個節(jié)點用一個[val, random_index]表示:

  • val:一個表示 Node.val 的整數(shù)。
  • random_index:隨機指針指向的節(jié)點索引(范圍從 0 到 n-1 );如果不指向任何節(jié)點,則為 NULL 。

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

?2、題目解析

將原有鏈表給復制一份,同時原有鏈表的 random 指針是隨機指向某一個節(jié)點的,復制鏈表的同時也要保證該節(jié)點的 random 指針指向的值與原有鏈表的random指向的值不變。

思路如下:

第一步:首先將原有鏈表的每個節(jié)點都拷貝一份放在原節(jié)點的后面。

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

第二步:設置拷貝節(jié)點的 random,我們用 cur 遍歷原鏈表,cur->random->next 節(jié)點,就是 copy 的 random 要找的節(jié)點。(使用綠色的線表示的)

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

第三步:我們的復制后的鏈表節(jié)點的random已經處理完畢了,接下來我們將兩個鏈表分割開來,并組成各自新的鏈表。(斷開后,用紫色的線重新組成新的鏈表)

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表

struct Node* copyRandomList(struct Node* head) 
{
    //拷貝節(jié)點,并鏈接在源節(jié)點的后面
	struct Node* cur = head;
    while(cur)
    {
        struct Node* next = cur->next;
        struct Node* copy = (struct Node*)malloc(sizeof(struct Node));
        copy->val = cur->val;
        //插入鏈接
        cur->next = copy;
        copy->next = next;
        cur = next;
    }
    //設置拷貝節(jié)點的random
    cur = head;
    while(cur)
    {
        struct Node* copy = cur->next;
        if(cur->random ==  NULL)
            copy->random =  NULL;
        else
        {
            copy->random = cur->random->next;
        }
        cur = cur->next->next;
    }
    //拷貝節(jié)點解下來,鏈接組成拷貝鏈表
    cur = head;
    struct Node* copyHead = NULL,*copyTail =NULL;
    while(cur)
    {
        struct Node* copy = cur->next;
        struct Node* next = copy->next;
        cur->next = next;
        //尾插
        if(copyTail ==  NULL)
        {
            copyHead = copyTail = copy;
        }
        else
        {
            copyTail->next = copy;
            copyTail = copyTail->next;
        }
        cur = next;
    }
    return copyHead;
}

?


本文要是有不足的地方,歡迎大家在下面評論,我會在第一時間更正。

隨機指針鏈表的復制 有環(huán),數(shù)據(jù)結構,leetcode,鏈表文章來源地址http://www.zghlxwxcb.cn/news/detail-794186.html

???老鐵們,記著點贊加關注!!!?

到了這里,關于【數(shù)據(jù)結構】LeetCode升級版的環(huán)形鏈表,復制帶隨機指針的鏈表的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • FDMA3.1數(shù)據(jù)緩存方案全網(wǎng)最細講解,自創(chuàng)升級版,送3套視頻和音頻緩存工程源碼

    FDMA3.1數(shù)據(jù)緩存方案全網(wǎng)最細講解,自創(chuàng)升級版,送3套視頻和音頻緩存工程源碼

    FDMA數(shù)據(jù)緩存方案發(fā)布也有五六年了,但真正能熟練使用的兄弟卻很少,其實還是沒有好的例程作為參考和同熟易懂的講解,這里我做如下解析: FDMA部分:這部分是米聯(lián)客封裝了用戶接口的AXI4-FULL協(xié)議代碼,我之前寫過一篇文章,逐行講解這個模塊,感興趣的兄弟可以去參考

    2024年02月08日
    瀏覽(33)
  • selenium升級版

    1.1原理 Selenium 是一個 Web 應用的自動化框架。 通過它,我們可以寫出自動化程序,像人一樣在瀏覽器里操作web界面。 比如點擊界面按鈕,在文本框 中輸入文字 等操作。(相當于真正的瀏覽) 而且還能從web界面獲取信息。 比如獲取12306票務信息,招聘網(wǎng)站職位信息,財經網(wǎng)

    2024年01月16日
    瀏覽(16)
  • C語言猜數(shù)字升級版

    C語言猜數(shù)字升級版

    題目概述 猜數(shù)字是一種益智游戲,既可以兩個人一起玩,也可以與電腦一起玩。現(xiàn)在我們需要將這個游戲移到電腦上,讓電腦與我們一起玩猜數(shù)字游戲. 需求分析 用戶輸入:確定用戶輸入的數(shù)據(jù)是否正確 游戲過程:保證計算機能正確選定一個隨機數(shù)字,并能夠正常與用戶互

    2024年02月04日
    瀏覽(28)
  • 單身狗問題(初級)兼(升級版)

    所屬專欄:經典算法題?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點贊和關注是對我最大的支持?。?!?? ?? 博主也會更加的努力,創(chuàng)作出更優(yōu)質的博文??!?? ?? 關注我,關注我,關注我,重要的事情說三遍?。。。。。。?!

    2024年02月16日
    瀏覽(16)
  • 愛心發(fā)射代碼帶名字升級版

    愛心發(fā)射代碼帶名字升級版

    上次的愛心發(fā)射發(fā)出來之后,群友想問能不能把心愛的人名字放在愛心中間。 當然沒問題啊,于是我就改了改代碼,讓女神王鐵蛋顯示在愛心中間,同時還可以在屏幕上飄動滿屏的王鐵蛋,大大小小、快快慢慢的王鐵蛋。 這還拿不下王鐵蛋? 話不多說,直接上效果圖。 背景

    2024年02月11日
    瀏覽(16)
  • 爬蟲練習-12306自動購票升級版

    爬蟲練習-12306自動購票升級版

    hello兄弟們,偷懶歸來了。別問為啥這么久沒更,問就是失蹤了 最近一直在學習Django以及爬蟲進階之類的知識,加上快期末了,一直沒有想起來自己還有一個賬號沒有更新,sorry啦 言歸正傳,今天抽空把前面的文章升級了一下。這里先把整理好的代碼提前放給大家 代碼放上,

    2024年02月06日
    瀏覽(53)
  • P1553 數(shù)字反轉(升級版)(JAVA)

    以下為原題面,僅供參考: 給定一個數(shù),請將該數(shù)各個位上數(shù)字反轉得到一個新數(shù)。 這次與 NOIp2011 普及組第一題不同的是:這個數(shù)可以是小數(shù),分數(shù),百分數(shù),整數(shù)。整數(shù)反轉是將所有數(shù)位對調;小數(shù)反轉是把整數(shù)部分的數(shù)反轉,再將小數(shù)部分的數(shù)反轉,不交換整數(shù)部分與小

    2024年02月13日
    瀏覽(24)
  • EasyExcel復雜表頭導出(一對多)升級版

    EasyExcel復雜表頭導出(一對多)升級版

    ????????在之前寫的?EasyExcel復雜表頭導出(一對多)的博客的結尾,受限于當時的能力和精力,留下一些問題及展望?,F(xiàn)在寫下此博客,目的就是解決之前遺留的問題。 ? ? ? ? 背景介紹,見上述鏈接指向的博客,這里主要通過 自定義攔截器 的形式來完美解決。 對于圖

    2024年02月06日
    瀏覽(20)
  • 云計算中網(wǎng)絡基礎知識(升級版)

    云計算中網(wǎng)絡基礎知識(升級版)

    網(wǎng)絡相連:電腦-交換機-電腦 需要配置兩個地址:(1) IP地址、子網(wǎng)掩碼、網(wǎng)關(網(wǎng)絡的出口)。 (2) MAC 地址(物理地址)不需要配置,電腦網(wǎng)卡自帶的(天生就有) 電腦必須要配置IP地址、子網(wǎng)掩碼 才可以通信、網(wǎng)關可以不用(前提是兩臺電腦處在同一個網(wǎng)段下) 網(wǎng)關

    2023年04月27日
    瀏覽(19)
  • 【Unity+MySQL】實現(xiàn)注冊登錄系統(tǒng)(升級版)

    【Unity+MySQL】實現(xiàn)注冊登錄系統(tǒng)(升級版)

    接著 上篇文章所談到的系統(tǒng)缺陷,這篇文章進行升級解決。 問題 :注冊界面與登錄界面是同一個界面,導致用戶輸入用戶密碼進行注冊后,即可點擊登錄。 解決 :在同一個場景中分別創(chuàng)建注冊界面和登錄界面,使用SetActive控制注冊/登錄成功后UI的顯示與隱藏。 整體的UI框

    2024年02月09日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包