1. 程式人生 > >LintCode -- 合併排序陣列 II

LintCode -- 合併排序陣列 II

描述

合併兩個排序的整數陣列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; } }