文章目錄
題目描述
將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過(guò)拼接給定的兩個(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]
提示:
- 兩個(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