LintCode -- 合併排序陣列 II
阿新 • • 發佈:2019-01-25
描述
合併兩個排序的整數陣列A和B變成一個新的陣列。
樣例
給出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑戰
你能否優化你的演算法,如果其中一個數組很大而另一個數組很小?
原題地址
難度級別
容易
解題思路
這道題一看,怎麼這麼眼熟,這不就是歸併嗎?
public class Solution {
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
public int[] mergeSortedArray(int[] A, int[] B) {
int lena = A.length;
int lenb = B.length;
int[] merge = new int[lena + lenb];
int i = 0, j = 0, k = 0;
/*if (A[lena - 1] < B[0]) {
for (k = 0; k < lena + lenb; k++) {
if (k < lena) {
merge[k] = A[i];
i++;
} else {
merge[k] = B[j];
j++;
}
}
} else if (B[lenb - 1] < A[0]) {
for (k = 0; k < lena + lenb; k++) {
if (k < lenb) {
merge[k] = B[i];
i++;
} else {
merge[k] = A[j];
j++;
}
}
} else { 這段意義不大,會很大程度上影響效能*/
while (i < lena && j < lenb) {
if (A[i] < B[j]) {
merge[k++] = A[i++];
} else {
merge[k++] = B[j++];
}
}
while (i < lena) {
merge[k++] = A[i++];
}
while (j < lenb) {
merge[k++] = B[j++];
}
}
return merge;
}
}