LeetCode 兩個排序陣列合併問題

2021-06-27 00:52:08 字數 727 閱讀 3588

merge sorted array

問題:

given two sorted integer arrays a and b, merge b into a as one sorted array.

常規思想:

從b的起始位置開始,將選中的值與a陣列值逐一判斷,找到a[i]大於b[j]的i將其插入,如此迭代下去。

public static void merge(int a, int m, int b, int n) 

} int a = 0, b = 0;

while (b < n)

if (a < m)

a[a] = b[b];

} else

a++;

b++;

m++;

} }

ps ,此方法存在弊端,在每次插入,需要迭代陣列,複雜度比較大,o(n*m/2)。

另一種好的方法:

假設 a陣列 大小為 m; b陣列大小為 n 

由題可知,最後合併成的陣列a,大小必定是a+b,也即n+m,既然這樣,為什麼不從n+m-1位開始,

從 n-1 開始,比較 b[n-1]與a[m-1] 將大的賦值給a[n+m-1],依次迭代下去,

public static void mergenew(int a, int m, int b, int n)

}

LeetCode 陣列 合併兩個有序陣列

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例...

兩個有序陣列合併

題目描述 已知陣列a中有m個按公升序排列的元素,陣列b中有n個按降序排列的元素,程式設計將a與b中的所有元素按降序存入陣列c中。輸入輸入有兩行,第一行首先是乙個正整數m,然後是m個整數 第二行首先是乙個正整數n,然後是n個整數,m,n均小於等於1000000。輸出輸出合併後的m n個整數,資料之間用...

LeetCode 兩個排序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 package...