[刷题]Merge Sorted Array II

来源:互联网 发布:mac mysql oracle 工具 编辑:程序博客网 时间:2024/06/05 19:09

[LintCode]Merge Sorted Array II

Version I

class Solution {    /**     * @param A: sorted integer array A which has m elements,      *           but size of A is m+n     * @param B: sorted integer array B which has n elements     * @return: void     */    public void mergeSortedArray(int[] A, int m, int[] B, int n) {        // 2015-4-13 很笨的方法 O((m+n)log(m+n))        if (A == null || B == null || A.length == 0 || B.length == 0) {            return;        }                for (int i = 0; i < n; i++) {            A[m + i] = B[i];        }        Arrays.sort(A);        return;    }}

Version II

class Solution {    /**     * @param A: sorted integer array A which has m elements,      *           but size of A is m+n     * @param B: sorted integer array B which has n elements     * @return: void     */    public void mergeSortedArray(int[] A, int m, int[] B, int n) {        // 2015-4-13 O(m + n)        if (A == null || B == null || A.length == 0 || B.length == 0) {            return;        }                int index = m + n;        while (m > 0 && n > 0) {            if (A[m - 1] > B[n - 1]) {                A[--index] = A[--m];            } else {                A[--index] = B[--n];            }        }        while (n > 0) {            A[--index] = B[--n];        }        // 只要n = 0说明B的元素已经全部搬完,此时A中剩下的元素就不用再动了        // while (m > 0) {        //     A[--index] = A[--m];        // }        return ;    }}



0 0
原创粉丝点击