18 合併兩個有序陣列(簡單)

2021-10-10 01:18:56 字數 1965 閱讀 3675

給你兩個有序整數陣列 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]

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.

""" ''

'法一:三指標法'

'' i = m-

1 j = n-

1 k = m+n-

1while i>=

0 and j>=0:

if nums1[i]

>= nums2[j]

: nums1[k]

= nums1[i]

i -=

1 k -=

1else

: nums1[k]

= nums2[j]

j -=

1 k -=

1while j >=0:

nums1[k]

= nums2[j]

k -=

1 j -=1''

'法二:借助了乙個輔助陣列'

88 合併兩個有序陣列(簡單)

解題思路 使用 i 遍歷nums1,由於兩個陣列都為有序陣列所以可以直接比較第 i 個元素和nums2中的元素,若第i個元素比nums2中第乙個元素大的話,則將nums2中的的第乙個元素插入到第i個位置,將nums2 0 刪除 nums2陣列中始終儲存著沒有插入的元素 若第i個位置小於nums2中的...

88 簡單 合併兩個有序陣列

方法一 從後往前排,從陣列的尾端往前比較,放置元素,如果nums2中有數剩餘沒排,則將其copy到nums1中 o n void merge int nums1,int nums1size,int m,int nums2,int nums2size,int n else temp1 if 0 m 方...

合併兩個有序陣列

例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...