python合并两个有序列表_合并两个有序链表(Python3)
提出問題:將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
解決思路:合并鏈表很簡單,設(shè)置兩個(gè)指針遍歷兩個(gè)鏈表,同時(shí)遍歷并比較大小,如果1鏈表的當(dāng)前節(jié)點(diǎn)值較小,將該節(jié)點(diǎn)添加到新鏈表中,1鏈表遍歷指針后移一位,直到兩個(gè)鏈表內(nèi)所有節(jié)點(diǎn)都添加到新鏈表中。注意:題目要求新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的,所以初始新建一個(gè)頭節(jié)點(diǎn),將頭節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)指針指向兩個(gè)鏈表中的最小節(jié)點(diǎn),最后返回頭節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。
代碼如下( ̄▽ ̄):
# 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:
if l1==None:
return l2
elif l2==None:
return l1
else:
h1 = l1
h2 = l2
head = ListNode(0)
result = head
while h1!=None and h2!=None:
if h1.val <= h2.val:
head.next = h1
h1 = h1.next
else:
head.next = h2
h2 = h2.next
head = head.next
if h1!=None:
head.next = h1
if h2!=None:
head.next = h2
return result.next
時(shí)間與空間復(fù)雜度:
總結(jié)
以上是生活随笔為你收集整理的python合并两个有序列表_合并两个有序链表(Python3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle cpu 利用率过高 ksw
- 下一篇: python分组求和_Python学习笔