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

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn)

這篇具有很好參考價值的文章主要介紹了【鏈表OJ 3】鏈表的中間結(jié)點(diǎn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言:?

? ? ? ? 本文收錄于http://t.csdn.cn/n6UEP數(shù)據(jù)結(jié)構(gòu)刷題的博客中,首先歡迎大家的來訪,其次如有錯誤,非常歡迎大家的指正!我會及時更正錯誤!

目錄

一.鏈表的中間結(jié)點(diǎn)?

1.1原理:快慢指針的使用

鏈表元素個數(shù)為奇數(shù)時

鏈表元素個數(shù)為偶數(shù)時

1.2循環(huán)條件問題?


一.鏈表的中間結(jié)點(diǎn)?

來源:876. 鏈表的中間結(jié)點(diǎn) - 力扣(LeetCode)

題目:

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn),C--數(shù)據(jù)結(jié)構(gòu)刷題,算法,數(shù)據(jù)結(jié)構(gòu),c語言,筆記,vscode,開發(fā)語言

1.1原理:快慢指針的使用

這個算法之所以有效,是因?yàn)?span style="color:#4da8ee;">fast指針的移動速度是slow指針的兩倍。

快慢指針的精妙之處在于,當(dāng)快指針移動到鏈表尾部時,慢指針就剛好移動了鏈表長度的一半,從而找到中間節(jié)點(diǎn)。因此當(dāng),fast指針到達(dá)鏈表尾部時,slow指針將正好指向鏈表的中間節(jié)點(diǎn)。無論鏈表長度奇偶,這個方法都可以在一次遍歷正確找到中間節(jié)點(diǎn)。

時間復(fù)雜度:O(n),因?yàn)橹槐闅v鏈表一次。
空間復(fù)雜度:O(1),因?yàn)闆]有使用額外的空間。

整體思路:

  1. 函數(shù)以指向鏈表頭部的指針作為參數(shù)。

  2. 初始化兩個指針?slow??fast,它們都指向鏈表的頭部。

  3. 進(jìn)入一個循環(huán),只要fast不為NULL且fast->next不為NULL,循環(huán)會繼續(xù)執(zhí)行。這個循環(huán)用于通過鏈表前進(jìn)指針。

  4. 每次循環(huán)迭代中,slow?指針向前移動一步,通過賦值slow?= slow-> next。

  5. fast指針向前移動兩步,通過賦值fast = fast?-> next -> next。

  6. 當(dāng)循環(huán)結(jié)束時,slow?指針將指向鏈表的中間節(jié)點(diǎn)。這是因?yàn)?strong>fast指針的移動速度是slow指針的兩倍,當(dāng)?fast指針到達(dá)鏈表尾部時,slow指針剛好在鏈表的中間。

  7. 最后,函數(shù)返回slow指針,即鏈表的中間節(jié)點(diǎn)。

鏈表元素個數(shù)為奇數(shù)

動圖演示:

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn),C--數(shù)據(jù)結(jié)構(gòu)刷題,算法,數(shù)據(jù)結(jié)構(gòu),c語言,筆記,vscode,開發(fā)語言

鏈表元素個數(shù)為偶數(shù)

返回第二個中間結(jié)點(diǎn)的原因是題目要求:

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn),C--數(shù)據(jù)結(jié)構(gòu)刷題,算法,數(shù)據(jù)結(jié)構(gòu),c語言,筆記,vscode,開發(fā)語言

?動圖演示:

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn),C--數(shù)據(jù)結(jié)構(gòu)刷題,算法,數(shù)據(jù)結(jié)構(gòu),c語言,筆記,vscode,開發(fā)語言

1.2循環(huán)條件問題?

循環(huán)條件不能調(diào)換順序:

while 循環(huán)條件?fast && fast->next?不能寫成?fast->next && fast?的目的是為了確保在遍歷鏈表時不會出現(xiàn)空指針異常。

如果將循環(huán)條件調(diào)換為fast->next&& fast?,在鏈表長度為奇數(shù)時,當(dāng)快指針?fast指向最后一個節(jié)點(diǎn)時,fast->next仍然不為NULL,但此時fast已經(jīng)為NULL,這樣會導(dǎo)致在訪問fastnext指針時出現(xiàn)錯誤。

通過保持條件為fast && fast->next?,可以確保在fast 和 fast->next?每次迭代中,快指針都不為NULL,從而避免了空指針的訪問錯誤。這是正確處理快慢指針遍歷的關(guān)鍵。

因此,為了保證代碼的正確性,應(yīng)該保持原始代碼中的循環(huán)條件不變,即fast && fast->next。

代碼實(shí)現(xiàn)

struct ListNode* middleNode(struct ListNode* head){
      struct ListNode* slow=head,*fast=head;
      while(fast && fast->next)
      {
            slow=slow->next;
            fast=fast->next->next;
       }
       return slow;
}

代碼執(zhí)行:

【鏈表OJ 3】鏈表的中間結(jié)點(diǎn),C--數(shù)據(jù)結(jié)構(gòu)刷題,算法,數(shù)據(jù)結(jié)構(gòu),c語言,筆記,vscode,開發(fā)語言

? ? ? ? 本文到此結(jié)束,如有錯誤歡迎大家指正,感謝來訪!文章來源地址http://www.zghlxwxcb.cn/news/detail-634210.html

到了這里,關(guān)于【鏈表OJ 3】鏈表的中間結(jié)點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 反轉(zhuǎn)鏈表、鏈表的中間結(jié)點(diǎn)、合并兩個有序鏈表【LeetCode刷題日志】

    反轉(zhuǎn)鏈表、鏈表的中間結(jié)點(diǎn)、合并兩個有序鏈表【LeetCode刷題日志】

    給你單鏈表的頭節(jié)點(diǎn) head ,請你反轉(zhuǎn)鏈表,并返回反轉(zhuǎn)后的鏈表。 力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺 這里解釋一下三個指針的作用: n1:記錄上一個節(jié)點(diǎn),如果是第一個就指向空 n2:記錄此節(jié)點(diǎn)的位置 n3:記錄下一個節(jié)點(diǎn)的位置,讓翻轉(zhuǎn)后能找到下一個節(jié)點(diǎn)

    2024年02月03日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)OJ題】鏈表中倒數(shù)第k個結(jié)點(diǎn)

    【數(shù)據(jù)結(jié)構(gòu)OJ題】鏈表中倒數(shù)第k個結(jié)點(diǎn)

    原題鏈接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13tqId=11167rp=2ru=/activity/ojqru=/ta/coding-interviews/question-ranking 目錄 1. 題目描述 2. 思路分析 3. 代碼實(shí)現(xiàn) 快慢指針法 ? (如果有小伙伴不了解快慢指針法,可以看看這篇文章:https://blog.csdn.net/m0_62531913/article/details/

    2024年02月12日
    瀏覽(33)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】刪除鏈表的中間節(jié)點(diǎn)

    【數(shù)據(jù)結(jié)構(gòu)和算法】刪除鏈表的中間節(jié)點(diǎn)

    Java基礎(chǔ)合集 數(shù)據(jù)結(jié)構(gòu)與算法合集 設(shè)計模式合集 多線程合集 分布式合集 ES合集 其他系列文章導(dǎo)航 文章目錄 前言 一、題目描述 二、題解 三、代碼 四、復(fù)雜度分析 這是力扣的 2095 題,難度為中等,解題方案有很多種,本文講解我認(rèn)為最奇妙的一種。 慢慢開始鏈表的模塊了

    2024年01月19日
    瀏覽(20)
  • 【鏈表OJ】鏈表中倒數(shù)第k個結(jié)點(diǎn) 合并兩個鏈表(含哨兵位) 分割鏈表 鏈表的回文結(jié)構(gòu)

    【鏈表OJ】鏈表中倒數(shù)第k個結(jié)點(diǎn) 合并兩個鏈表(含哨兵位) 分割鏈表 鏈表的回文結(jié)構(gòu)

    前言: ????個人主頁:??????Dream_Chaser~????? ??刷題專欄:http://t.csdn.cn/UlvTc ??本篇內(nèi)容:力扣和??蜕湘湵鞳J題目 目錄 ?一、鏈表中倒數(shù)第k個結(jié)點(diǎn) 題目描述: 解題思路: 二.合并兩個鏈表(含哨兵位)? 題目描述: 解題思路:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年02月12日
    瀏覽(78)
  • 數(shù)據(jù)結(jié)構(gòu):鏈表基礎(chǔ)OJ練習(xí)+帶頭雙向循環(huán)鏈表的實(shí)現(xiàn)

    數(shù)據(jù)結(jié)構(gòu):鏈表基礎(chǔ)OJ練習(xí)+帶頭雙向循環(huán)鏈表的實(shí)現(xiàn)

    目錄 一.leetcode劍指 Offer II 027.?回文鏈表 1.問題描述 2.問題分析與求解 (1) 快慢指針法定位鏈表的中間節(jié)點(diǎn) (2)?將鏈表后半部分進(jìn)行反轉(zhuǎn) 附:遞歸法反轉(zhuǎn)鏈表 (3)?雙指針法判斷鏈表是否回文 二.帶頭雙向循環(huán)鏈表的實(shí)現(xiàn) 1.頭文件 2.節(jié)點(diǎn)內(nèi)存申請接口和鏈表初始化接口 3.鏈表的打

    2024年02月02日
    瀏覽(31)
  • 【力扣-876】鏈表的中間結(jié)點(diǎn)

    【力扣-876】鏈表的中間結(jié)點(diǎn)

    ??作者 : Djx_hmbb ??專欄 : 數(shù)據(jù)結(jié)構(gòu) ??今日分享 : ----------小Tips: 雖然都是口服液體制劑,且看起來單支容量都一樣,但是“藿香正氣水”與“藿香正氣口服液”的區(qū)別你知道嗎?藿香正氣水里含有 40%-50% 的乙醇,而藿香正氣口服液不含有乙醇。同時藿香正氣水不能和頭孢一

    2023年04月19日
    瀏覽(21)
  • 【LeetCode】876. 鏈表的中間結(jié)點(diǎn)

    【LeetCode】876. 鏈表的中間結(jié)點(diǎn)

    leetcode鏈接 876. 鏈表的中間結(jié)點(diǎn)

    2024年01月19日
    瀏覽(49)
  • 【劍指offer|圖解|鏈表】鏈表的中間結(jié)點(diǎn) + 鏈表中倒數(shù)第k個結(jié)點(diǎn)

    【劍指offer|圖解|鏈表】鏈表的中間結(jié)點(diǎn) + 鏈表中倒數(shù)第k個結(jié)點(diǎn)

    ??個人主頁: 聆風(fēng)吟 ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)、算法模板 ??少年有夢不應(yīng)止于心動,更要付諸行動。 ???? ?? hello! 小伙伴們大家好哇,今天作者給大家?guī)淼氖擎湵淼南嚓P(guān)面試題的講解,在學(xué)習(xí)了下文之后,相信大家可以更好的理解鏈表,并且我們同過本文的練習(xí)相

    2024年02月05日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】——單鏈表的基本操作(帶頭結(jié)點(diǎn))

    【數(shù)據(jù)結(jié)構(gòu)】——單鏈表的基本操作(帶頭結(jié)點(diǎn))

    ? ? ? ? 單鏈表解決了順序表需要大量連續(xù)存儲單元的缺點(diǎn),但單鏈表附加指針域, 存儲密度較順序表低(考點(diǎn)?。。?。由于單鏈表的元素離散地分布在存儲空間中,所以單鏈表是 非隨機(jī)存取 的存儲結(jié)構(gòu),即不能直接找到表中某個特定的結(jié)點(diǎn)。當(dāng)查找某個特定結(jié)點(diǎn)時,需要

    2024年02月05日
    瀏覽(100)
  • 詳解鏈表oJ<反轉(zhuǎn)鏈表,鏈表的中間節(jié)點(diǎn)及鏈表的回文>

    詳解鏈表oJ<反轉(zhuǎn)鏈表,鏈表的中間節(jié)點(diǎn)及鏈表的回文>

    hello,大家好,這里是Dark FlameMaster,今天和大家分享的是有關(guān)數(shù)據(jù)結(jié)構(gòu)鏈表的幾道題目,鏈表的中間節(jié)點(diǎn),反轉(zhuǎn)鏈表及判斷鏈表是否為回文結(jié)構(gòu),放在一起講解會印象更加深刻。 鏈接:鏈表的中間節(jié)點(diǎn) 分析: ?如果想要得到鏈表的中間節(jié)點(diǎn),最簡單的思路就是從頭結(jié)點(diǎn)遍歷整

    2024年02月08日
    瀏覽(89)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包