當(dāng)前位置:首頁(yè) > IT技術(shù) > 編程語(yǔ)言 > 正文

【LeetCode Python實(shí)現(xiàn)】21. 合并兩個(gè)有序鏈表(簡(jiǎn)單)
2022-04-18 10:49:51



文章目錄


題目描述

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

示例 1:

【LeetCode Python實(shí)現(xiàn)】21. 合并兩個(gè)有序鏈表(簡(jiǎn)單)_鏈表

輸入:l1 = [1,2,4], l2 = [1,3,4]

輸出:[1,1,2,3,4,4]

示例 2:

輸入:l1 = [], l2 = []

輸出:[]

示例 3:

輸入:l1 = [], l2 = [0]

輸出:[0]

提示:

  • 兩個(gè)鏈表的節(jié)點(diǎn)數(shù)目范圍是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非遞減順序 排列

解析

兩個(gè)鏈表比較后需要產(chǎn)生新的鏈表,先生成一個(gè)頭節(jié)點(diǎn)便于結(jié)束返回,一直兩個(gè)鏈表是有序的當(dāng)其中一個(gè)循環(huán)結(jié)束,另一個(gè)剩下的一定是大于等于新鏈表 最后一個(gè)節(jié)點(diǎn)的,直接追加在新鏈表后就可以。

參考代碼

# 44 ms 14.9 MB
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:

head = ListNode()
temp = head
while list1 and list2:
if list1.val < list2.val:
temp.next = list1
list1 = list1.next
else:
temp.next = list2
list2 = list2.next
temp = temp.next

temp.next = list1 or list2
return head.next



本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >