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

138. 復(fù)制帶隨機指針的鏈表(深拷貝)題解

這篇具有很好參考價值的文章主要介紹了138. 復(fù)制帶隨機指針的鏈表(深拷貝)題解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目描述:138. 復(fù)制帶隨機指針的鏈表 - 力扣(LeetCode)

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

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

138. 復(fù)制帶隨機指針的鏈表(深拷貝)題解,數(shù)據(jù)結(jié)構(gòu)Oj,鏈表,數(shù)據(jù)結(jié)構(gòu)

?題解思路:

  1. 第一遍循環(huán):復(fù)制節(jié)點并插入原節(jié)點之后

    在這一步中,我們會遍歷原鏈表,并為每個節(jié)點創(chuàng)建一個新的節(jié)點,然后將新節(jié)點插入到原節(jié)點之后-->插入時可以采用先用新節(jié)點的next指向current的next,在用current的next指向新節(jié)點,最后再將current移動到新節(jié)點的next;如果先將current的next指向新節(jié)點,這樣就還需要保存原節(jié)點的下一個。

  2. 第二遍循環(huán):設(shè)置新節(jié)點的隨機指針

    我們可以根據(jù)原節(jié)點的隨機指針來設(shè)置新節(jié)點的隨機指針。如果原節(jié)點的隨機指針不為空,那么新節(jié)點的隨機指針應(yīng)該指向原節(jié)點隨機指針指向的新節(jié)點(原節(jié)點的下一個節(jié)點);如果原節(jié)點的隨機指針為空,新節(jié)點的隨機指針指向NULL。

  3. 第三遍循環(huán):拆分鏈表

    在這一步,我們需要將鏈表分成原鏈表和新鏈表。我們遍歷鏈表,將每個新節(jié)點連接到一起,同時恢復(fù)原鏈表的 next 指針-->利用尾插的思想,將新節(jié)點作為尾插節(jié)點進行尾插;

  4. 最后返回新鏈表的頭指針。

代碼:

struct Node* creatNode(int val)
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->val = val;
    newNode->next = NULL;
    newNode->random = NULL;
    return newNode;
}
struct Node* copyRandomList(struct Node* head) 
{
	// 復(fù)制節(jié)點并插入原節(jié)點之后
    struct Node* current = head;
    while(current)
    {
        struct Node* next = current->next;
        struct Node* newNode = creatNode(current->val);
        newNode->next = current->next;
        current->next = newNode;
        current = next;
    }
    // 設(shè)置新節(jié)點的隨機指針
    current = head;
    while(current)
    {
        struct Node* newNode = current->next;
        if(current->random != NULL)
        {
            newNode->random = current->random->next;
        }
        else
        {
            newNode->random = NULL;
        }
        current = newNode->next;
    }
    // 拆分鏈表
    struct Node* newHead = NULL, *newTail = NULL; 
    current = head;
    while(current)
    {
        struct Node* newNode = current->next;
        struct Node* next = newNode->next;
        // 尾插
        if(newTail == NULL)
        {
            newHead = newTail = newNode;
        }
        else
        {
            newTail->next = newNode;
            newTail = newNode;
        }
        current->next = next; // 恢復(fù)原鏈表的 next 指針
        current = next;
    }
    return newHead;
}

注:(第一步圖解)

138. 復(fù)制帶隨機指針的鏈表(深拷貝)題解,數(shù)據(jù)結(jié)構(gòu)Oj,鏈表,數(shù)據(jù)結(jié)構(gòu)


本次內(nèi)容到此結(jié)束了!如果你覺得這篇博客對你有幫助的話 ,希望你能夠給我點個贊,鼓勵一下我。感謝感謝……文章來源地址http://www.zghlxwxcb.cn/news/detail-639718.html

到了這里,關(guān)于138. 復(fù)制帶隨機指針的鏈表(深拷貝)題解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【LeetCode-中等題】138. 復(fù)制帶隨機指針的鏈表

    【LeetCode-中等題】138. 復(fù)制帶隨機指針的鏈表

    這里的拷貝屬于深拷貝,就是不光是拷貝值,還要拷貝其指針的引用情況。如果只是單獨的單向鏈表,則直接可以根據(jù)next指向找到下一個結(jié)點,然后創(chuàng)建一個新節(jié)點復(fù)制過來,直接拷貝,但是題目中的random指針指向的節(jié)點是沒有歸類的,這樣我們就不可能使用普通的循環(huán)來進

    2024年02月10日
    瀏覽(88)
  • leetcode做題筆記138. 復(fù)制帶隨機指針的鏈表

    給你一個長度為?n?的鏈表,每個節(jié)點包含一個額外增加的隨機指針?random?,該指針可以指向鏈表中的任何節(jié)點或空節(jié)點。 構(gòu)造這個鏈表的?深拷貝。?深拷貝應(yīng)該正好由?n?個?全新?節(jié)點組成,其中每個新節(jié)點的值都設(shè)為其對應(yīng)的原節(jié)點的值。新節(jié)點的?next?指針和?random?

    2024年02月07日
    瀏覽(32)
  • 【數(shù)據(jù)結(jié)構(gòu)】兩兩交換鏈表 && 復(fù)制帶隨機指針的鏈表

    【數(shù)據(jù)結(jié)構(gòu)】兩兩交換鏈表 && 復(fù)制帶隨機指針的鏈表

    給你一個鏈表,兩兩交換其中相鄰的節(jié)點,并返回交換后鏈表的頭節(jié)點。你必須在不修改節(jié)點內(nèi)部的值的情況下完成本題(即,只能進行節(jié)點交換)。 使用一個棧S來存儲相鄰兩個節(jié)點即可 給你一個長度為 n 的鏈表,每個節(jié)點包含一個額外增加的隨機指針 random ,該指針可以

    2024年04月15日
    瀏覽(101)
  • 【數(shù)據(jù)結(jié)構(gòu)OJ題】復(fù)制帶隨機指針的鏈表

    【數(shù)據(jù)結(jié)構(gòu)OJ題】復(fù)制帶隨機指針的鏈表

    原題鏈接:https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現(xiàn) 此題可以分三步進行: 1. 拷貝鏈表的每一個結(jié)點,拷貝的結(jié)點先鏈接到被拷貝結(jié)點的后面。 2. 復(fù)制隨機指針的鏈接:拷貝結(jié)點的隨機指針指向被拷貝結(jié)點隨機指針的下

    2024年02月12日
    瀏覽(310)
  • 【數(shù)據(jù)結(jié)構(gòu)】LeetCode升級版的環(huán)形鏈表,復(fù)制帶隨機指針的鏈表

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

    ? ? ? ? ? 1、題目說明 ? ? ? ? ? 2、題目解析 ? ? ? ? ??1、題目說明 ? ? ? ? ? 2、題目解析 ? ? ?1、題目說明 題目鏈接: 升級版的環(huán)形鏈表? 給定一個鏈表的頭節(jié)點 head ,返回鏈表開始入環(huán)的第一個節(jié)點。? 如果鏈表無環(huán),則返回NULL。 如果鏈表中有某個節(jié)點,可以通

    2024年01月16日
    瀏覽(102)
  • 單鏈表OJ題:LeetCode--138.復(fù)制帶隨即指針的鏈表

    單鏈表OJ題:LeetCode--138.復(fù)制帶隨即指針的鏈表

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

    2024年02月08日
    瀏覽(91)
  • 力扣-復(fù)制帶隨機指針的鏈表

    給你一個長度為? n ?的鏈表,每個節(jié)點包含一個額外增加的隨機指針? random ?,該指針可以指向鏈表中的任何節(jié)點或空節(jié)點。 構(gòu)造這個鏈表的? 深拷貝 。?深拷貝應(yīng)該正好由? n ?個? 全新 ?節(jié)點組成,其中每個新節(jié)點的值都設(shè)為其對應(yīng)的原節(jié)點的值。新節(jié)點的? next ?指針和

    2024年02月11日
    瀏覽(83)
  • 【鏈表OJ 11】復(fù)制帶隨機指針的鏈表

    【鏈表OJ 11】復(fù)制帶隨機指針的鏈表

    前言:? ????個人主頁:??????Dream_Chaser~????? ??刷題專欄:http://t.csdn.cn/UlvTc ??本篇內(nèi)容:力扣上鏈表OJ題目 目錄 leetcode138. 復(fù)制帶隨機指針的鏈表 1. 問題描述 2.代碼思路: 2.1拷貝節(jié)點插入到原節(jié)點的后面 2.2控制拷貝節(jié)點的random???? 2.3拷貝節(jié)點解下來尾插組成拷

    2024年02月09日
    瀏覽(117)
  • 【LeetCode】 復(fù)制帶隨機指針的鏈表

    【LeetCode】 復(fù)制帶隨機指針的鏈表

    Leetcode 138.復(fù)制帶隨機指針的鏈表 給你一個長度為 n 的鏈表,每個節(jié)點包含一個額外增加的隨機指針 random ,該指針可以指向鏈表中的任何節(jié)點或空節(jié)點。 構(gòu)造這個鏈表的 深拷貝。 深拷貝應(yīng)該正好由 n 個 全新 節(jié)點組成,其中每個新節(jié)點的值都設(shè)為其對應(yīng)的原節(jié)點的值。新節(jié)

    2024年02月08日
    瀏覽(90)
  • Leetcode刷題之復(fù)制帶隨機指針的鏈表

    Leetcode刷題之復(fù)制帶隨機指針的鏈表

    生命不是安排,而是追求,人生的意義也許永遠沒有答案,但也要盡情感受這種沒有答案的人生。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --弗吉尼亞.? 伍爾芙? ? ? ?? 目錄 前言:

    2024年02月04日
    瀏覽(90)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包