[LeetCode By Python] 21. Merge Two Sorted Lists

一、題目

Merge Two Sorted Lists

二、解題

兩個(gè)有序鏈表的排序。

三、嘗試與結(jié)果

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        ret = ListNode(0)
        if l1 == None:
            return l2
        if l2 == None:
            return l1

        if l1.val < l2.val:
            ret = l1
            ret.next = self.mergeTwoLists(l1.next,l2)
        else:
            ret = l2
            ret.next = self.mergeTwoLists(l2.next,l1)

        return ret

結(jié)果:AC

四、學(xué)習(xí)與記錄

這個(gè)其實(shí)算是一個(gè)歸并排序:

歸并排序(MERGE-SORT)是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;即先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并。

每次2路歸并的時(shí)候,就是這題了,自己的思維老是限制在了兩個(gè)鏈表里面,讓兩個(gè)鏈表互相修改next,而沒有想過跳出來,用一個(gè)新的鏈表組成(跳出來之后就海闊天空了~),2分鐘搞定。

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        if l1 == None:
            return l2
        if l2 == None:
            return l1
        ret = ListNode(0)
        head = ret
        while l1 != None and l2 != None:
            if l1.val > l2.val:
                ret.next = l2
                l2 = l2.next
            else:
                ret.next = l1
                l1 = l1.next
            ret = ret.next

        if l1 == None:
            ret.next = l2

        if l2 == None:
            ret.next = l1

        return head.next

結(jié)果:AC

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 排序的基本概念 在計(jì)算機(jī)程序開發(fā)過程中,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個(gè)關(guān)鍵字進(jìn)行排序,排序完成的序列可用于快...
    Jack921閱讀 1,567評(píng)論 1 4
  • 概述排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的...
    Luc_閱讀 2,371評(píng)論 0 35
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會(huì)員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 18,388評(píng)論 2 36
  • 因?yàn)橹熬蛷?fù)習(xí)完數(shù)據(jù)結(jié)構(gòu)了,所以為了保持記憶,整理了一份復(fù)習(xí)綱要,復(fù)習(xí)的時(shí)候可以看著綱要想具體內(nèi)容。 樹 樹的基本...
    牛富貴兒閱讀 7,516評(píng)論 3 10
  • 我們之所以過的違心,就是聽了太多“好人”的話,不是自己真正想做想了解的事情 要么就是自己的積淀還沒有積累起來,還沒...
    嚴(yán)藝丹閱讀 297評(píng)論 0 0

友情鏈接更多精彩內(nèi)容