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

【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]

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

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

1.題目來源

分割鏈表

2.題目描述

給你一個(gè)鏈表的頭節(jié)點(diǎn) head 和一個(gè)特定值 x ,請(qǐng)你對(duì)鏈表進(jìn)行分隔,使得所有 小于 x 的節(jié)點(diǎn)都出現(xiàn)在 大于或等于 x 的節(jié)點(diǎn)之前。
你不需要 保留 每個(gè)分區(qū)中各節(jié)點(diǎn)的初始相對(duì)位置。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]

3.解題思路

本題的意思就是說把下小于x的數(shù)據(jù)放在左邊,大于等于x的數(shù)據(jù)放在右邊,在改變順序的同時(shí)不改變?cè)瓉淼牡难颉?br> 我們的思路是創(chuàng)建兩個(gè)鏈表,一個(gè)鏈表LessHead放小于下的數(shù)據(jù),另一個(gè)鏈表greaterHead放大于等于x的數(shù)據(jù),最后把兩個(gè)兩邊合并成一個(gè)鏈表,然后返回新鏈表的首節(jié)點(diǎn)地址就行了。

為了方便鏈接,我們使用創(chuàng)建哨兵的方法來作為兩個(gè)鏈表的頭節(jié)點(diǎn),所謂哨兵為就是它的val是無效數(shù)據(jù),但是它的next指向下一個(gè)地址。
接著我們創(chuàng)建一個(gè)變量cur來遍歷我們的鏈表,然后根據(jù)他們的大小來給他們分配到不同的鏈表里去。

圖解:
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]
當(dāng)x=3 的時(shí)候,cur開始遍歷,首先是第一個(gè)節(jié)點(diǎn)的數(shù)據(jù)是1它比3小我們就把他鏈接到我們的LessHead鏈表中去,同時(shí)我們用LessNext來記錄鏈接過來的節(jié)點(diǎn)點(diǎn)的地址,在以后往后鏈接的時(shí)候只需要用LessHead表示就好,這樣的好處是鏈接完后我們返回鏈表的頭節(jié)點(diǎn)的地址的時(shí)候就直接返回LessHead就行了。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]
同樣的cur遍歷完第一個(gè)后只需要是cur=cur->next就可以訪問第二個(gè)節(jié)點(diǎn)了,因?yàn)槲覀冊(cè)阪溄拥谝粋€(gè)節(jié)點(diǎn)的時(shí)候并沒有破壞我們第一個(gè)節(jié)點(diǎn)指向我們第二個(gè)節(jié)點(diǎn)的通道,我們依然可以通過第一個(gè)節(jié)點(diǎn)找到第二個(gè)節(jié)點(diǎn),同樣的我們用greaterNext來表示我們接下來的節(jié)點(diǎn)地址。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]
以此類推到我們的cur指向NULL的時(shí)候我們的循環(huán)就停止了。
接著就是將兩個(gè)鏈表合并就行。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]
我們只需要將lessTail->next=greaterHead->next;就行了。
但是這里有個(gè)特別重要的事情就是我們連接完后我們的greaterNext指向那里了?它真的就指向了NULL嗎?答案是否定的。
我們回到之前鏈接的時(shí)候:
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]
我們看到這里我們的存放5數(shù)據(jù)的next是指向2的地址的。
【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(5)[分割鏈表]

所以他的圖像解析就變成了這個(gè)樣子,如果是這樣的話,就成環(huán)了,再返回地址的時(shí)候內(nèi)存就會(huì)出問題。
所以這里的解決方案就是把我們的greaterNext->next置空即:greaterNext->next=NULL。文章來源地址http://www.zghlxwxcb.cn/news/detail-444977.html

4.代碼展示

struct ListNode* partition(struct ListNode* head, int x)
{
    //創(chuàng)建哨兵位,方便鏈接
    struct ListNode* lessHead,*lessTail,*greaterHead,*greaterTail;
    //存放小于x的數(shù)據(jù)
    lessHead=lessTail=(struct ListNode*)malloc(sizeof(struct ListNode));
    lessHead->next=NULL;
    
	//存放大于等于x的數(shù)據(jù)
    greaterHead=greaterTail=(struct ListNode*)malloc(sizeof(struct ListNode));
    greaterHead->next=NULL;
	
	//遍歷鏈表指針
    struct ListNode* cur=head;

    while(cur)
    {
        //尾插
        if(cur->val < x)
        {
            lessTail->next=cur;
            lessTail=cur;
        }
        else
        {
            greaterTail->next=cur;
            greaterTail=cur;
        }
        cur=cur->next;
    }
    //鏈接兩個(gè)鏈表
    lessTail->next=greaterHead->next;
    //消除環(huán),我們的5最后還指向我們2,這個(gè)時(shí)候就形成了一個(gè)環(huán)、
    greaterTail->next=NULL;

    struct ListNode* newnode=lessHead->next;
    //最后釋放兩個(gè)創(chuàng)建的內(nèi)存空間
    free(lessHead);
    free(greaterHead);
    return newnode;
}

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

本文來自互聯(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)文章

  • 【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)注是對(duì)我最大的支持?。?!?? ?? 博主也會(huì)更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文!!?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍!?。。。?/p>

    2024年02月13日
    瀏覽(35)
  • 【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)注是對(duì)我最大的支持!?。?? ?? 博主也會(huì)更加的努力,創(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)注是對(duì)我最大的支持?。?!?? ?? 博主也會(huì)更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文?。?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍!?。。?!

    2024年02月13日
    瀏覽(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ù)字都是按照 逆序 的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位

    2024年02月05日
    瀏覽(33)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】416、LeetCode分割等和子集

    【算法與數(shù)據(jù)結(jié)構(gòu)】416、LeetCode分割等和子集

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題可以抽象成一個(gè)01背包的問題,關(guān)于01背包可以看【算法與數(shù)據(jù)結(jié)構(gòu)】算法與數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)。 本題只需要求出數(shù)組的累積和,然后和的一半就可以視為背包的最大重量,目標(biāo)

    2024年01月19日
    瀏覽(30)
  • 【數(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è)為其對(duì)應(yīng)的原節(jié)點(diǎn)的值。新節(jié)點(diǎn)的? next ?指針和

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

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

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

    2024年01月16日
    瀏覽(101)
  • 數(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.證明分析? 下一題會(huì)用到的重要小結(jié)論: 四.leetcode142.?環(huán)形鏈表 II 1.問題描述 2.問題分析與求解 Judgecycle接口: 方法一: 方法二:? 單鏈表和帶環(huán)單鏈表

    2023年04月08日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    雙向鏈表也叫雙鏈表,與單向鏈表不同的是,每一個(gè)節(jié)點(diǎn)有三個(gè)區(qū)域組成:兩個(gè)指針域,一個(gè)數(shù)據(jù)域 前一個(gè)指針域:存儲(chǔ)前驅(qū)節(jié)點(diǎn)的內(nèi)存地址 后一個(gè)指針域:存儲(chǔ)后繼節(jié)點(diǎn)的內(nèi)存地址 數(shù)據(jù)域:存儲(chǔ)節(jié)點(diǎn)數(shù)據(jù) 以下就是雙向鏈表的最基本單位 節(jié)點(diǎn)的前指針域指向前驅(qū),后指針

    2024年02月04日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包