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

【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題)

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

??write in front??
??所屬專欄:初階數(shù)據(jù)結(jié)構(gòu)
???博客主頁(yè):睿睿的博客主頁(yè)
???代碼倉(cāng)庫(kù):??VS2022_C語(yǔ)言倉(cāng)庫(kù)
??您的點(diǎn)贊、關(guān)注、收藏、評(píng)論,是對(duì)我最大的激勵(lì)和支持?。。?br>關(guān)注我,關(guān)注我,關(guān)注我,你們將會(huì)看到更多的優(yōu)質(zhì)內(nèi)容??!

【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

前言:

??在前面的練習(xí)中,我們簡(jiǎn)單練習(xí)了鏈表的相關(guān)題目,今天我們?cè)趤?lái)做一些拓展!

例題1:

在這里插入圖片描述【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

方法1:

??在上一篇博客里面,我們講述了快慢指針的概念:通過(guò)步長(zhǎng)的差異處理環(huán)的問(wèn)題。而這道題我們要尋找入口點(diǎn),我們?cè)撊绾翁幚砟兀?/p>

首先,我們假設(shè)

  • 起始點(diǎn)到入口的長(zhǎng)度為L(zhǎng),
  • 入口到相遇點(diǎn)的距離為X,
  • 環(huán)的長(zhǎng)度為C。

接下來(lái)我們通過(guò)快慢指針的兩個(gè)性質(zhì)(快指針是慢指針步數(shù)的兩倍,快慢指針最后相遇)列出一個(gè)方程:
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
??由得出的結(jié)論我們可以看出,如果讓一個(gè)指針a從起點(diǎn)出發(fā),另一個(gè)指針b從相遇點(diǎn)出發(fā),如果是閉環(huán),則他們一定會(huì)相遇?。ㄟ@里我們并不需要算出n的值,因?yàn)閚的值是是讓a指針多走n-1個(gè)整圈,不影響和b指針相遇)。
下面我們來(lái)看看代碼:

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

方法2:

??如果同學(xué)們?cè)谧鲱}時(shí)無(wú)法自己推出這個(gè)結(jié)論,那么此時(shí)我們也可以將相遇點(diǎn)斷開(kāi),此時(shí)就變成了尋找公共節(jié)點(diǎn)的題目了。
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

例題2:

【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
對(duì)于這道題目,大家可能最先會(huì)想到計(jì)數(shù)器的方法,通過(guò)記錄每個(gè)random的位置,在拷貝的鏈表里面找到對(duì)于位置依次連接。但是這樣會(huì)導(dǎo)致時(shí)間復(fù)雜度非常的低下:O(N^2)
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
為了降低復(fù)雜度,就不得不使用另外一種方法。要降低時(shí)間復(fù)雜度,我們就希望能快速的找到原節(jié)點(diǎn)的拷貝節(jié)點(diǎn)。怎么找呢?

1.拷貝節(jié)點(diǎn)鏈接在原節(jié)點(diǎn)后面
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

2.此時(shí)拷貝節(jié)點(diǎn)的random就是原節(jié)點(diǎn)random->next
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

3.拷貝節(jié)點(diǎn)解下來(lái),鏈接成新鏈表,最后將原鏈表還原。
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode
【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode

完整代碼:

struct Node* copyRandomList(struct Node* head) 
{
	//第一步
    struct Node*cur=head;
    while(cur)
    {
        struct Node* newnode=(struct Node*)malloc(sizeof(struct Node));
        struct Node* next=cur->next;

        cur->next=newnode;

        newnode->next=next;
        newnode->val=cur->val;

        cur=next;
    }
    //第二步
    cur=head;
    while(cur)
    {
        struct Node*prev=cur->next;
        if(cur->random==NULL)
        {
            prev->random=NULL;
        }
        else
        {
            prev->random=cur->random->next;
        }
        cur=cur->next->next;
    }
    //第三步
    struct Node* newhead=NULL,*newtail=NULL;
    cur=head;
    while(cur)
    {
        struct Node*prev=cur->next;
        struct Node*next=prev->next;
        if(newhead==NULL)
        {
            newhead=newtail=prev;
        }
        else
        {
            newtail->next=prev;
            newtail=prev;
        }
        cur=next;
    }
    return newhead;
}

總結(jié)

??鏈表的相關(guān)題目到這里就結(jié)束了,當(dāng)然同學(xué)們也可以去oj看看其他題:oj題
??更新不易,辛苦各位小伙伴們動(dòng)動(dòng)小手,??三連走一走???? ~ ~ ~ 你們真的對(duì)我很重要!最后,本文仍有許多不足之處,歡迎各位認(rèn)真讀完文章的小伙伴們隨時(shí)私信交流、批評(píng)指正!

專欄訂閱:
每日一題
c語(yǔ)言學(xué)習(xí)
算法
智力題
初階數(shù)據(jù)結(jié)構(gòu)
更新不易,辛苦各位小伙伴們動(dòng)動(dòng)小手,??三連走一走???? ~ ~ ~ 你們真的對(duì)我很重要!最后,本文仍有許多不足之處,歡迎各位認(rèn)真讀完文章的小伙伴們隨時(shí)私信交流、批評(píng)指正!

【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題),初階數(shù)據(jù)結(jié)構(gòu),鏈表,數(shù)據(jù)結(jié)構(gòu),leetcode文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-813943.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】鏈表相關(guān)題目(中檔題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 初階數(shù)據(jù)結(jié)構(gòu)(三)鏈表

    初階數(shù)據(jù)結(jié)構(gòu)(三)鏈表

    ??博主csdn個(gè)人主頁(yè):小小unicorn?? ?專欄分類:c++ ??代碼倉(cāng)庫(kù):小小unicorn的學(xué)習(xí)足跡?? ??????關(guān)注我?guī)銓W(xué)習(xí)編程知識(shí) 前面我們講的線性表的 順序存儲(chǔ)結(jié)構(gòu) 。它是有缺點(diǎn)的,最大的缺點(diǎn)就是插入和刪除時(shí)需要移動(dòng)大量元素,這顯然就需要 耗費(fèi)時(shí)間 ,那能不能想辦法

    2024年02月09日
    瀏覽(94)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】鏈表OJ

    【數(shù)據(jù)結(jié)構(gòu)初階】鏈表OJ

    OJ 方案一: 題目解析: 方案二: 題目解析:把原鏈表遍歷一遍,插入新鏈表 OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: 定義快慢指針,使快指針先走與慢指針同步。然后同時(shí)走看是否相交 OJ 題目解析: OJ 題目解析:

    2024年02月05日
    瀏覽(95)
  • 數(shù)據(jù)結(jié)構(gòu)——圖解鏈表OJ題目

    數(shù)據(jù)結(jié)構(gòu)——圖解鏈表OJ題目

    ? ? ? ? 學(xué)完了單鏈表之后,我們對(duì)其基本結(jié)構(gòu)已經(jīng)有了一定的了解,接下來(lái)我們通過(guò)一些題目強(qiáng)化對(duì)鏈表的理解,同時(shí)學(xué)習(xí)一些面試筆試題目的新思路以及加強(qiáng)對(duì)數(shù)據(jù)結(jié)構(gòu)單鏈表的掌握。? 目錄 題目一.876. 鏈表的中間結(jié)點(diǎn) - 力扣(LeetCode) 題目二:21. 合并兩個(gè)有序鏈表

    2024年02月04日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】第四節(jié).鏈表詳講

    【數(shù)據(jù)結(jié)構(gòu)初階】第四節(jié).鏈表詳講

    前言 一、單鏈表的概念 二、鏈表的創(chuàng)建 2.1鏈表的初始化 2.2 打印鏈表 2.3 獲取鏈表的長(zhǎng)度 2.4?判斷鏈表是否為空 三、新增結(jié)點(diǎn) 3.1頭插 3.2?指定下標(biāo)插入 四、刪除結(jié)點(diǎn) 4.1 頭刪 4.2 指定下標(biāo)的刪除 4.3?刪除鏈表中的指定元素 五、單鏈表查找 六、附錄 總代碼 測(cè)試代碼 總結(jié) 前

    2023年04月15日
    瀏覽(17)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】順序表和鏈表(1)

    【數(shù)據(jù)結(jié)構(gòu)初階】順序表和鏈表(1)

    線性表(linear list) 是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實(shí)際中廣泛使 用的數(shù)據(jù)結(jié)構(gòu),常見(jiàn)的線性表:順序表、鏈表、棧、隊(duì)列、字符串… 線性表在邏輯上是線性結(jié)構(gòu),也就說(shuō)是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上

    2024年02月08日
    瀏覽(1598)
  • 初階數(shù)據(jù)結(jié)構(gòu)之---順序表和鏈表(C語(yǔ)言)

    初階數(shù)據(jù)結(jié)構(gòu)之---順序表和鏈表(C語(yǔ)言)

    線性表: 線性表(linear list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實(shí)際中廣泛使用的數(shù)據(jù)結(jié)構(gòu)。線性表在邏輯上是線性結(jié)構(gòu),也就是說(shuō)是連續(xù)的一條直線。但在物理上并不一定是連續(xù)的。線性表在物理上存儲(chǔ)時(shí),通常以 數(shù)組 和 鏈?zhǔn)浇Y(jié)構(gòu) 的形式存儲(chǔ)。

    2024年02月22日
    瀏覽(96)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】四、線性表里的鏈表(帶頭+雙向+循環(huán) 鏈表 -- C語(yǔ)言實(shí)現(xiàn))

    【數(shù)據(jù)結(jié)構(gòu)初階】四、線性表里的鏈表(帶頭+雙向+循環(huán) 鏈表 -- C語(yǔ)言實(shí)現(xiàn))

    ========================================================================= 相關(guān)代碼gitee自取 : C語(yǔ)言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據(jù)結(jié)構(gòu)初階】三、 線性表里的鏈表(無(wú)頭+單向+非循環(huán)鏈表 -- C語(yǔ)言實(shí)現(xiàn))-CSDN博客 ?====

    2024年02月08日
    瀏覽(31)
  • C/C++數(shù)據(jù)結(jié)構(gòu)之鏈表題目答案與解析

    C/C++數(shù)據(jù)結(jié)構(gòu)之鏈表題目答案與解析

    個(gè)人主頁(yè):點(diǎn)我進(jìn)入主頁(yè) 專欄分類:C語(yǔ)言初階? ? ??C語(yǔ)言程序設(shè)計(jì)————KTV? ? ? ?C語(yǔ)言小游戲? ? ?C語(yǔ)言進(jìn)階 C語(yǔ)言刷題? ? ? ?數(shù)據(jù)結(jié)構(gòu)初階 歡迎大家點(diǎn)贊,評(píng)論,收藏。 一起努力,一起奔赴大廠。 目錄 1.前言? 2.題目解析 2.1?移除鏈表元素 2.2反轉(zhuǎn)鏈表 2.3鏈表的中

    2024年02月05日
    瀏覽(24)
  • 『初階數(shù)據(jù)結(jié)構(gòu) ? C語(yǔ)言』⑨ - 基于結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    『初階數(shù)據(jù)結(jié)構(gòu) ? C語(yǔ)言』⑨ - 基于結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    ? 本章內(nèi)容 1.什么是鏈表 2.鏈表常見(jiàn)幾種形式 3.無(wú)頭單向非循環(huán)鏈表的實(shí)現(xiàn) 3.1結(jié)點(diǎn)結(jié)構(gòu)的定義 3.2函數(shù)接口的實(shí)現(xiàn) 3.2.1尾插 3.2.2尾刪 4. 帶頭雙向循環(huán)鏈表的實(shí)現(xiàn) 4.1結(jié)點(diǎn)結(jié)構(gòu)的定義 4.2函數(shù)接口的實(shí)現(xiàn) 5.兩種鏈表的差異 ①尾插與尾刪的時(shí)間復(fù)雜度 ②頭插與頭刪的時(shí)間復(fù)雜度 ③

    2024年02月16日
    瀏覽(95)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹(shù)的相關(guān)操作以及OJ題目

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹(shù)的相關(guān)操作以及OJ題目

    當(dāng)一個(gè)樹(shù)不是滿二叉樹(shù)或完全二叉樹(shù)時(shí),它是不適合使用數(shù)組存儲(chǔ)的,它應(yīng)該使用鏈?zhǔn)浇Y(jié)構(gòu)來(lái)存儲(chǔ)。 再看二叉樹(shù)基本操作前,再回顧下二叉樹(shù)的概念,二叉樹(shù)是: 空樹(shù) 非空:根節(jié)點(diǎn),根節(jié)點(diǎn)的左子樹(shù)、根節(jié)點(diǎn)的右子樹(shù)組成的。 從概念中可以看出,二叉樹(shù)定義是遞歸式的,因

    2024年03月19日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包