面試算法題-合併2個有序數組

這是一個真實的面試題:題目要求合併2個有序的數組到一個數組中。

例如:int[] = new int[]{1,3,5}; int[] b = new int[]{2,4,6}; 合併完的結果是:[1,2,3,4,,5,6]

我的java代碼實現如下:

public class MergeSortedArray {

    public static void main(String[] args) {
        int[] a = new int[]{11, 23, 33};
        int[] b = new int[]{2, 4, 6};

        int[] merged  = mergeTowSortedArray(a, b);
        for (int i : merged){
            System.out.println(i);
        }
    }

    /**
     *
     * @param a
     * @param b
     * @return
     */
    public static int [] mergeTowSortedArray(int[] a, int[] b){
        int[] c = new int[a.length + b.length];
        int i = 0, j = 0, k  = 0;
        while (i < a.length || j < b.length){
            //a數據已經遍歷完了,
            if (i >= a.length){
                c[k++] =  b[j];
                j++;
                continue;
            }
            if (j >= b.length){
                c[k++] = a[i];
                i++;
                continue;
            }
            if (a[i] <= b[j]){
                c[k++] = a[i];
                i++;
                continue;
            }
            c[k++] = b[j];
            j++;
        }
        return c;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章