Python LeetCode-21. 合并兩個有序鏈表(難度-簡單)(python)

LeetCode鏈接

1.題目

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

示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

2.分析

這道題是很基本的鏈表題俭识。思路很簡單:

  • 特殊值處理:L1L2分別為空的時候
  • 構(gòu)建一個新的鏈表(通過比較L1L2的頭節(jié)點)冠场,確定頭節(jié)點res_head(一個小技巧:通過一個first_flag來控制僅僅只需要在循環(huán)第一次執(zhí)行的事情谱姓,這個就像開關(guān)躯畴,有無窮盡的組合)
  • 不斷比較L1L2上的節(jié)點茫藏,鏈接到新鏈表后面
  • 當(dāng)L1或者L2其中一個節(jié)點提前用光误趴,那么把另一個后面那段鏈表直接接到新的鏈表上即可

3.解答

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        """
        思路:兩個鏈表都是有序的,那么分別遍歷兩個鏈表务傲,比較每一個節(jié)點凉当,匯集成一個新的鏈表
        """
        # ①特殊值處理
        if not l1:
            return l2

        if not l2:
            return l1

        # ②構(gòu)建新的有序鏈表(不斷比較l1和l2上的節(jié)點)
        current_1 = l1
        current_2 = l2
        first_flag = True  # 控制第一次才執(zhí)行事情的flag

        while current_1 and current_2:
            if first_flag:  # 構(gòu)建新的鏈表,確定新的頭結(jié)點res_head 
                res_head = current_1 if current_1.val < current_2.val else current_2
                first_flag = False
                if current_1.val < current_2.val:
                    current_1 = current_1.next
                else:
                    current_2 = current_2.next
                current = res_head
                continue
            if current_1.val < current_2.val:
                current.next = current_1  # 使得當(dāng)前節(jié)點指向新的節(jié)點
                current = current_1  # 構(gòu)建下一次循環(huán)使用的current 節(jié)點
                current_1 = current_1.next
            else:
                current.next = current_2
                current = current_2
                current_2 = current_2.next

        # ③處理剩余值
        current.next = current_1 if current_1 else current_2

        return res_head

簡潔點寫法:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1: 'ListNode', l2: 'ListNode') -> 'ListNode':
        head = ListNode(0)
        node = head
        while l1 and l2:
            if l1.val <= l2.val:
                node.next = l1
                l1 = l1.next
            else:
                node.next = l2
                l2 = l2.next
            node = node.next
        if l1:
            node.next = l1
        if l2:
            node.next = l2
        return head.next

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末树灶,一起剝皮案震驚了整個濱河市纤怒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌天通,老刑警劉巖泊窘,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異像寒,居然都是意外死亡烘豹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門诺祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來携悯,“玉大人,你說我怎么就攤上這事筷笨°竟恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵胃夏,是天一觀的道長轴或。 經(jīng)常有香客問我,道長仰禀,這世上最難降的妖魔是什么照雁? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮答恶,結(jié)果婚禮上饺蚊,老公的妹妹穿的比我還像新娘萍诱。我一直安慰自己,他們只是感情好污呼,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布裕坊。 她就那樣靜靜地躺著,像睡著了一般燕酷。 火紅的嫁衣襯著肌膚如雪碍庵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天悟狱,我揣著相機與錄音静浴,去河邊找鬼。 笑死挤渐,一個胖子當(dāng)著我的面吹牛苹享,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浴麻,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼得问,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了软免?” 一聲冷哼從身側(cè)響起宫纬,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膏萧,沒想到半個月后漓骚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡榛泛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年蝌蹂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曹锨。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡孤个,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沛简,到底是詐尸還是另有隱情齐鲤,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布椒楣,位于F島的核電站给郊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撒顿。R本人自食惡果不足惜丑罪,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一荚板、第九天 我趴在偏房一處隱蔽的房頂上張望凤壁。 院中可真熱鬧吩屹,春花似錦、人聲如沸拧抖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唧席。三九已至擦盾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淌哟,已是汗流浹背迹卢。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徒仓,地道東北人腐碱。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像掉弛,于是被迫代替她去往敵國和親症见。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348