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

【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]

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

所屬專欄:玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu)題型
博主首頁:初陽785
代碼托管:chuyang785
感謝大家的支持,您的點(diǎn)贊和關(guān)注是對我最大的支持!??!
博主也會更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文?。?br>關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍?。。。。。。?!

1.題目來源

回文鏈表

2.題目描述

給定一個(gè)鏈表的 頭節(jié)點(diǎn) head ,請判斷其是否為回文鏈表。
如果一個(gè)鏈表是回文,那么鏈表節(jié)點(diǎn)序列從前往后看和從后往前看是相同的。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]

3.解題思路

這個(gè)題目需要結(jié)合之前的幾個(gè)解題思路。
1.快慢指針
2.查找中間節(jié)點(diǎn)
3.反轉(zhuǎn)鏈表

既然我們要判斷是否是回文數(shù),如果他是個(gè)數(shù)組的話我們就會創(chuàng)建兩個(gè)變量,一個(gè)從頭出發(fā),一個(gè)從尾出發(fā),一次迭代判斷是否相同,這樣的話就很好的解決了問題。
但是這里是鏈表,鏈表的特點(diǎn)就是它是單向的,你只能找到后一個(gè),但是你找不到前面一個(gè)。
那我們就想一下有沒有方法可以實(shí)現(xiàn)類似于數(shù)組的方法呢?

我們先觀察一下回文的特點(diǎn):
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]
我們會發(fā)現(xiàn)如果是偶數(shù)的話左邊一半會等于右邊一半反轉(zhuǎn)之后的樣子。
既然我們不能從尾向頭遍歷,那我們不妨把后半部分反戰(zhàn)過來,讓它的尾做頭,這樣子我們就可以遍歷并判斷力。

于是我們就得先找到中間節(jié)點(diǎn),并從中間節(jié)點(diǎn)開始反轉(zhuǎn)一中間節(jié)點(diǎn)尾起點(diǎn)的鏈表。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]
反轉(zhuǎn)的時(shí)候我們得創(chuàng)建一個(gè)新的節(jié)點(diǎn)newNode,然后頭插反轉(zhuǎn)鏈表:
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]
但是我們不要忘記了雖然我們反轉(zhuǎn)鏈表了,但是上面的3的next還是指向下面3的地址的:
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]
將他變成這個(gè)樣子之后,我們就可以遍歷我們的head->val是否等于newNode->val來判斷是否是回文鏈表了。
只要head或者newNode其中一個(gè)遍歷到了NULL就停止。文章來源地址http://www.zghlxwxcb.cn/news/detail-434983.html

4.代碼展示

bool isPalindrome(struct ListNode* head)
{
    //1.找中間節(jié)點(diǎn)
    //快慢指針
    struct ListNode*fast=head,*low=head;
    while(fast && fast->next)//快慢指針退出條件(當(dāng)鏈表是偶數(shù)后者是奇數(shù)的時(shí)候)
    {
        low=low->next;
        fast=fast->next->next;
    }
    struct ListNode* midNode=low;
    //2.反轉(zhuǎn)中間節(jié)點(diǎn)以后的鏈表
    struct ListNode* newNode=NULL,*midNext=NULL;
    while(midNode)
    {
        midNext=midNode->next;
        midNode->next=newNode;
        newNode=midNode;
        midNode=midNext;
    }
    //3.迭代判斷是否相同
    while(head && newNode)//這里同樣的鏈表可能是偶數(shù)也可能是奇數(shù),不知道誰先到達(dá)NULL
    {
        if(head->val != newNode->val)
            return false;
        head=head->next;
        newNode=newNode->next;
    }
    return true;
}

到了這里,關(guān)于【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(6)[回文鏈表]的文章就介紹完了。如果您還想了解更多內(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】數(shù)據(jù)結(jié)構(gòu)題解(11)[用隊(duì)列實(shí)現(xiàn)棧]

    【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(11)[用隊(duì)列實(shí)現(xiàn)棧]

    所屬專欄:玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu)題型?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點(diǎn)贊和關(guān)注是對我最大的支持!?。?? ?? 博主也會更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文??!?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍!?。。?!

    2024年02月13日
    瀏覽(26)
  • 【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(13)[設(shè)計(jì)循環(huán)鏈表]

    【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(13)[設(shè)計(jì)循環(huán)鏈表]

    所屬專欄:玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu)題型?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點(diǎn)贊和關(guān)注是對我最大的支持?。?!?? ?? 博主也會更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文??!?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍?。。。。?/p>

    2024年02月13日
    瀏覽(23)
  • 【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(12)[用棧實(shí)現(xiàn)隊(duì)列]

    【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(12)[用棧實(shí)現(xiàn)隊(duì)列]

    所屬專欄:玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu)題型?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點(diǎn)贊和關(guān)注是對我最大的支持?。?!?? ?? 博主也會更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文!!?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍?。。。?!

    2024年02月13日
    瀏覽(36)
  • LeetCode_鏈表的回文結(jié)構(gòu)

    LeetCode_鏈表的回文結(jié)構(gòu)

    ??所屬專欄:LeetCode刷題專欄?? ??作者主頁:嶔某?? 對于一個(gè)鏈表,請?jiān)O(shè)計(jì)一個(gè)時(shí)間復(fù)雜度為O(n),額外空間復(fù)雜度為O(1)的算法,判斷其是否為回文結(jié)構(gòu)。給定一個(gè)鏈表的頭指針A,請返回一個(gè)bool值,代表其是否為回文結(jié)構(gòu)。保證鏈表長度小于等于900。 就比如:1-2-3

    2024年04月26日
    瀏覽(18)
  • 【Leetcode】反轉(zhuǎn)鏈表 合并鏈表 相交鏈表 鏈表的回文結(jié)構(gòu)

    【Leetcode】反轉(zhuǎn)鏈表 合并鏈表 相交鏈表 鏈表的回文結(jié)構(gòu)

    ? 目錄 一.【Leetcode206】反轉(zhuǎn)鏈表 1.鏈接 2.題目再現(xiàn) ?3.解法A:三指針法 二.【Leetcode21】合并兩個(gè)有序鏈表 1.鏈接 2.題目再現(xiàn) ?3.三指針尾插法 三.【Leetcode160】相交鏈表 1.鏈接 2.題目再現(xiàn) 3.解法 四.鏈表的回文結(jié)構(gòu) 1.鏈接 2.題目再現(xiàn) ?3.解法 1.鏈接 反轉(zhuǎn)鏈表 2.題目再現(xiàn) ?3.解法

    2024年02月02日
    瀏覽(22)
  • LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 鏈表 203 移除鏈表元素

    LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 鏈表 203 移除鏈表元素

    Given the? head ?of a linked list and an integer? val , remove all the nodes of the linked list that has? Node.val == val , and return? the new head . Example 1: Example 2: Example 3: Constraints: The number of nodes in the list is in the range? [0, 104] . 1 = Node.val = 50 0 = val = 50 今天leetcode的中文官網(wǎng)比較卡,所以是登錄官網(wǎng)進(jìn)行

    2024年02月14日
    瀏覽(31)
  • 【數(shù)據(jù)結(jié)構(gòu) | 鏈表】leetcode 2. 兩數(shù)相加

    【數(shù)據(jù)結(jié)構(gòu) | 鏈表】leetcode 2. 兩數(shù)相加

    個(gè)人主頁:兜里游客棉花糖 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 兜里游客棉花糖 原創(chuàng) 收錄于專欄【LeetCode】 原題鏈接:點(diǎn)擊直接跳轉(zhuǎn)到該題目 給你兩個(gè) 非空 的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個(gè)節(jié)點(diǎn)只能存儲 一位

    2024年02月05日
    瀏覽(34)
  • 【數(shù)據(jù)結(jié)構(gòu)】[LeetCode138. 復(fù)制帶隨機(jī)指針的鏈表]

    【數(shù)據(jù)結(jié)構(gòu)】[LeetCode138. 復(fù)制帶隨機(jī)指針的鏈表]

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

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

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

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

    2024年01月16日
    瀏覽(102)
  • 數(shù)據(jù)結(jié)構(gòu):帶環(huán)單鏈表基礎(chǔ)OJ練習(xí)筆記(leetcode142. 環(huán)形鏈表 II)(leetcode三題大串燒)

    數(shù)據(jù)結(jié)構(gòu):帶環(huán)單鏈表基礎(chǔ)OJ練習(xí)筆記(leetcode142. 環(huán)形鏈表 II)(leetcode三題大串燒)

    目錄 一.前言? 二.leetcode160.?相交鏈表? 1.問題描述 2.問題分析與求解 三.leetcode141.?環(huán)形鏈表 1.問題描述 2.代碼思路? 3.證明分析? 下一題會用到的重要小結(jié)論: 四.leetcode142.?環(huán)形鏈表 II 1.問題描述 2.問題分析與求解 Judgecycle接口: 方法一: 方法二:? 單鏈表和帶環(huán)單鏈表

    2023年04月08日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包