LeetCode刷題之路 88 合併兩個有序陣列

2021-10-13 21:41:20 字數 1891 閱讀 1538

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。

說明:初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。

你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。

示例:輸入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6], n = 3

輸出:[1,2,2,3,5,6]

-10^9 <= nums1[i], nums2[i] <= 10^9

nums1.length == m + n

nums2.length == n

#最直觀的思路

設l1/l2分別代表兩個列表當前所遍歷到的位置

insert表示已經插入成功的數字個數

首先判斷n是否為0,如果為0,則不需要修改nums1,直接跳過即可

若m為0,則直接將nums2的值全部賦予給nums1

(注意這裡使用nums1[:]而不是nums1

我們需要辨析:nums1 = a 和 nums1[:] = a 的不同之處:

nums1 = a # 更改 nums1 這一變數名所指向的物件。讓 nums1 變數指向 a 所指向的物件

nums1[:] = a # 對 nums1 指向的物件賦值。把 a 變數指向的物件的值逐個 copy 到 nums1 指向的物件中並覆蓋 nums1 指向的物件的原來值。

詳情可以檢視:

若m和n都不為0,則開始進行遍歷兩個列表

第一句判斷 nums2[l2]是否小於等於nums1[l1],同時l1是否小於m + insert,

若滿足,則將nums2[l2]插入到nums1[l1]的位置。同時l1/l2/insert都自加1

若不滿足,則只有l1自加1。(這代表當前nums1[l1]位置的數小於nums2[l2])

l1 >= m + insert 這句話是判斷nums1中的數字是否已經遍歷完畢,

如果nums1已經遍歷完畢,但是nums2中的數字卻沒有遍歷完畢,

則需要直接將nums2中沒遍歷過的數字直接插入到nums1中即可。

最後一步是提出原來nums1末尾的0

class solution:

def merge(self, nums1: list[int], m: int, nums2: list[int], n: int) -> none:

""" do not return anything, modify nums1 in-place instead.

""" l1 = 0

l2 = 0

insert = 0

if n == 0:

pass

elif m == 0:

nums1[:]

= nums2

else:

while l2 < len(nums2):

if nums2[l2]

<= nums1[l1] and l1 < m + insert:

nums1.insert(l1, nums2[l2]

) l2 += 1

l1 += 1

insert += 1

else:

l1 += 1

if l1 >= m + insert:

nums1.insert(l1, nums2[l2]

) l2 += 1

# print (nums1)

nums1[:]

= nums1[:len(nums1) - n]

return nums1

Evan的LeetCode刷題之路

二 資料庫 以此記錄本人的leetcode刷題之路。題目內容均 於leetcode 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2...

leetcode刷題之路38 報數

報數序列是乙個整數序列,按照其中的整數的順序進行報數,得到下乙個數。其前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給...

朝花夕拾 LeetCode刷題合輯

20220228 1601.最多可達成的換樓請求數目 方法一 dfs 列舉 列舉所有換樓請求的選擇與不選擇兩種情況,最後判斷是否滿足題意,時間複雜度為 o 2 m m 為請求個數,依題意 m 16,符合要求。1 include 2 3const int n 25 4 5class solution ...