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

LeetCode 21.合并兩個(gè)有序鏈表

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode 21.合并兩個(gè)有序鏈表。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)


LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)
題目鏈接?? LeetCode 21.合并兩個(gè)有序鏈表??

??題目分析

將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)
LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)
LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)

??解題思路

??思路1: 歸并排序思想(不使用帶哨兵衛(wèi)的頭節(jié)點(diǎn))

取小的進(jìn)行尾插

??圖解??

LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)

??接口源碼:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
	//考慮list1和list2其中一個(gè)為空的情況
    if (list1 == NULL)
    {
        return list2;
    }
    if (list2 == NULL)
    {
        return list1;
    }

    struct ListNode* head = NULL, * tail = NULL;
    
    //當(dāng)list1和list2任意一個(gè)為空循環(huán)就結(jié)束
    while (list1 && list2)
    {
        if (list1->val < list2->val)
        {
            if (tail == NULL)
            {
                head = tail = list1;
            }
            else
            {
                tail->next = list1;
                tail = tail->next;
            }

            list1 = list1->next;
        }
        else
        {
            if (tail == NULL)
            {
                head = tail = list2;
            }
            else
            {
                tail->next = list2;
                tail = tail->next;
            }

            list2 = list2->next;
        }
        
		//如果list1沒空則把list1后面剩下的數(shù)據(jù)直接鏈接到tail->next的后面
        if (list1)
        {
            tail->next = list1;
        }
        //如果list2沒空則把list2后面剩下的數(shù)據(jù)直接鏈接到tail->next的后面
        if (list2)
        {
            tail->next = list2;
        }
    }

    return head;
}

??解題思路

??思路2: 歸并排序思想(使用帶哨兵衛(wèi)的頭節(jié)點(diǎn))

取小的進(jìn)行尾插

??圖解??
LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)

??接口源碼:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
	//考慮list1和list2其中一個(gè)為空的情況
    if (list1 == NULL)
    {
        return list2;
    }
    if (list2 == NULL)
    {
        return list1;
    }

    struct ListNode* head = NULL, * tail = NULL;
    //帶哨兵衛(wèi)的頭節(jié)點(diǎn),這個(gè)頭節(jié)點(diǎn)不存儲有效數(shù)據(jù)
    head = tail = (struct ListNode*)malloc(sizeof(struct ListNode));
	
	//當(dāng)list1和list2任意一個(gè)為空循環(huán)就結(jié)束
    while (list1 && list2)
    {
        if (list1->val < list2->val)
        {
            tail->next = list1;
            tail = tail->next;
            list1 = list1->next;
        }
        else
        {
            tail->next = list2;
            tail = tail->next;
            list2 = list2->next;
        }
    }
	
	//如果list1沒空則把list1后面剩下的數(shù)據(jù)直接鏈接到tail->next的后面
    if (list1)
    {
        tail->next = list1;
    }
    //如果list2沒空則把list2后面剩下的數(shù)據(jù)直接鏈接到tail->next的后面
    if (list2)
    {
        tail->next = list2;
    }
	
	//在前面malloc的空間需要釋放,釋放前先保存head->next的地址
    struct ListNode* del = head;
    head = head->next;
    free(del);

    return head;
}

LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)
??希望烙鐵們能夠理解歐!

總結(jié)??
以上就是本題講解的全部內(nèi)容啦????????
本文章所在【C/C++刷題系列】專欄,感興趣的烙鐵可以訂閱本專欄哦??????
前途很遠(yuǎn),也很暗,但是不要怕,不怕的人面前才有路。??????
小的會繼續(xù)學(xué)習(xí),繼續(xù)努力帶來更好的作品??????
創(chuàng)作寫文不易,還多請各位大佬uu們多多支持哦??????

LeetCode 21.合并兩個(gè)有序鏈表,C/C++刷題系列,leetcode,鏈表,算法,c語言,數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-645511.html

到了這里,關(guān)于LeetCode 21.合并兩個(gè)有序鏈表的文章就介紹完了。如果您還想了解更多內(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 熱題 100(五):54. 螺旋矩陣、234. 回文鏈表、21. 合并兩個(gè)有序鏈表

    LeetCode 熱題 100(五):54. 螺旋矩陣、234. 回文鏈表、21. 合并兩個(gè)有序鏈表

    54.?螺旋矩陣 https://leetcode.cn/problems/spiral-matrix/ 題目要求: ?思路:一定要 先找好邊界 。如下圖 ,上邊界是1234,右邊界是8、12,下邊界是9、10、11,左邊界是5,所以可以確定四個(gè)邊界所包含的值。然后再 循環(huán)一層一層往里進(jìn)入 ,比如添加完上邊界1234后,上邊界就需要+1,

    2024年02月12日
    瀏覽(30)
  • 【Leetcode -21.合并兩個(gè)有序鏈表 -83.刪除排序鏈表中的重復(fù)元素】

    【Leetcode -21.合并兩個(gè)有序鏈表 -83.刪除排序鏈表中的重復(fù)元素】

    題目:將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。 示例 1: 輸入:l1 = [1, 2, 4], l2 = [1, 3, 4] 輸出:[1, 1, 2, 3, 4, 4] 示例 2: 輸入:l1 = [], l2 = [] 輸出:[] 示例 3: 輸入:l1 = [], l2 = [0] 輸出:[0] 我們的思路是,先定義

    2023年04月24日
    瀏覽(29)
  • 【刷題筆記8.15】【鏈表相關(guān)】LeetCode:合并兩個(gè)有序鏈表、反轉(zhuǎn)鏈表

    【刷題筆記8.15】【鏈表相關(guān)】LeetCode:合并兩個(gè)有序鏈表、反轉(zhuǎn)鏈表

    將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。 輸入:l1 = [1,2,4], l2 = [1,3,4] 輸出:[1,1,2,3,4,4] 示例 2: 輸入:l1 = [], l2 = [] 輸出:[] 示例 3: 輸入:l1 = [], l2 = [0] 輸出:[0] 此題沒啥好說的,直接上代碼,自己好好分析

    2024年02月12日
    瀏覽(31)
  • C語言 | Leetcode C語言題解之第21題合并兩個(gè)有序鏈表
  • Leetcode算法遞歸類—合并兩個(gè)有序鏈表

    Leetcode算法遞歸類—合并兩個(gè)有序鏈表

    目錄 21.?合并兩個(gè)有序鏈表 題解: 代碼: 將兩個(gè)升序鏈表合并為一個(gè)新的? 升序 ?鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。? 示例 1: 示例 2: 示例 3: 提示: 兩個(gè)鏈表的節(jié)點(diǎn)數(shù)目范圍是? [0, 50] -100 = Node.val = 100 l1 ?和? l2 ?均按? 非遞減順序 ?

    2024年02月13日
    瀏覽(33)
  • LeetCode150道面試經(jīng)典題-- 合并兩個(gè)有序鏈表(簡單)

    LeetCode150道面試經(jīng)典題-- 合并兩個(gè)有序鏈表(簡單)

    將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。? 示例 1: 輸入:l1 = [1,2,4], l2 = [1,3,4] 輸出:[1,1,2,3,4,4]? ? 示例 2: 輸入:l1 = [], l2 = [] 輸出:[] 示例 3: ? 輸入:l1 = [], l2 = [0] 輸出:[0] 遞歸調(diào)用 將這個(gè)問題不斷拆分

    2024年02月12日
    瀏覽(29)
  • 圖靈日記之Leetcode刪除有序數(shù)組中的重復(fù)項(xiàng)&&合并兩個(gè)有序數(shù)組&&移除鏈表元素

    給你一個(gè) 非嚴(yán)格遞增排列 的數(shù)組 nums ,請你 原地 刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素 只出現(xiàn)一次 ,返回刪除后數(shù)組的新長度。元素的 相對順序 應(yīng)該保持 一致 。然后返回 nums 中唯一元素的個(gè)數(shù)。 考慮 nums 的唯一元素的數(shù)量為 k ,你需要做以下事情確保你的題解可以被通過

    2024年02月04日
    瀏覽(21)
  • 力扣每日一道系列 --- LeetCode 88. 合并兩個(gè)有序數(shù)組

    力扣每日一道系列 --- LeetCode 88. 合并兩個(gè)有序數(shù)組

    ?? 江池?。?個(gè)人主頁 ??個(gè)人專欄: ?數(shù)據(jù)結(jié)構(gòu)探索 ?LeetCode每日一道 ?? 有航道的人,再渺小也不會迷途。 LeetCode 88. 合并兩個(gè)有序數(shù)組 首先創(chuàng)建一個(gè)臨時(shí)數(shù)組,其大小為第一個(gè)數(shù)組的大?。磏ums1Size),其作用主要是。 通過循環(huán)遍歷兩個(gè)數(shù)組,將兩個(gè)數(shù)組元素比較后較

    2024年02月04日
    瀏覽(27)
  • 21. 合并兩個(gè)有序鏈表

    21. 合并兩個(gè)有序鏈表

    ?

    2024年02月12日
    瀏覽(25)
  • 21.合并兩個(gè)有序鏈表

    21.合并兩個(gè)有序鏈表

    一、思路 二、源碼 創(chuàng)建一個(gè)新鏈表 兩個(gè)鏈表比較,小于等于取下來尾插 循環(huán)結(jié)束條件為任意一個(gè)鏈表為空 最后將之剩下的鏈表直接尾插

    2024年01月23日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包