导航

Merge Sorted Array

Posted on 2014-10-26 21:51  八竿子打不着  阅读(99)  评论(0)    收藏  举报

级别简单,用了额外的空间,不知道这个可不可以改进,最后到时ac了。另外感觉做leetcode上面的题目要有试错的准备,比如数组A和数组B之间有没有重复的数据,题面上没有给出,事实上也是不必考虑的。

public class Solution {
    public void merge(int A[], int m, int B[], int n) {
        int res[] = new int[m + n];
        int pm = 0;
        int pn = 0;
        int i = 0;

        for (; i < m + n; i++) {

            if (pm == m) {
                if (pn == n) {
                    break;
                } else {
                    res[i] = B[pn];
                    pn++;
                }
            } else if (pn == n) {
                if (pm == m) {
                    break;
                } else {
                    res[i] = A[pm];
                    pm++;
                }
            } else {
                res[i] = (A[pm] > B[pn] ? B[pn] : A[pm]);
                if (A[pm] > B[pn]) {
                    pn++;
                } else {
                    pm++;
                }
            }
        }

        for (int j = 0; j < m + n; j++) {
            A[j] = res[j];
        }

    }
}