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

2021-10-01 10:39:00 字數 805 閱讀 7916

解題思路:

使用 i 遍歷nums1,由於兩個陣列都為有序陣列所以可以直接比較第 i 個元素和nums2中的元素,若第i個元素比nums2中第乙個元素大的話,則將nums2中的的第乙個元素插入到第i個位置,將nums2[0]刪除(nums2陣列中始終儲存著沒有插入的元素),若第i個位置小於nums2中的第乙個元素則 i+1,繼續比較下乙個元素與nums2中第0個元素的大小。若到最後i >= len(nums1)則遍歷完成後nums2中還有元素,則說明nums2中的元素比nums1中最大的元素都大(兩個陣列都為有序陣列),則直接在後面加入nums2中的元素。最後將nums1中 l(其實 l = m + n) 以後的位置的元素都刪除。

def

merge

(nums1, m, nums2, n)

: i =

0 l =

len(nums1)

while i < l and

len(nums2)

:if nums1[i]

> nums2[0]

: nums1.insert(i, nums2[0]

)del

(nums2[0]

) i +=1if

len(nums2)

: nums1[l -

len(nums2):]

= nums2

del(nums1[l:

])

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 方...

88 合併兩個有序陣列

略。知道是在nums1上變動。如果從nums1的頭部開始放,就會出現nums1緊接著的第乙個元素還沒有nums2從頭數第二個元素小的情形,這樣就沒有辦法比較了。而從nums1的最後乙個元素開始放,能夠保證nums1和nums2的最後乙個元素一定比彼此的倒數第二個元素大。所以選擇從nums1的最後乙個...

88 合併兩個有序陣列

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3輸出 1,2,2,3,5,6 思路 建乙個新的陣列nums,長度為m n 用乙個fo...