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