解題思路:
使用 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...