leetcode之Merge Sorted Array

You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.

这道题的思路和剑指offer上第2章中关于字符串操作的面试题4替换空格相似。如果从前面开始比较会不断地移动后面的数组元素,因此借助空格替换思想,定义三个指针来移动。

这道题虽然在leetcode上提交成功,但是仍然不知道自己去怎么测试。比如事先不知道应该给A定义多大的数组。今晚问了问同学,说可以先给A定义一个很长的数组,然后A数组输入的时候用Scanner 依次输入A[i];

好吧,这个问题先留着,把我的代码放在下面

public void merge(int A[], int m, int B[], int n) {
        int q = m+n-1;
        int p = m-1;
        int r = n-1;
        
        while(p>=0&&r>=0){
            if(A[p]>=B[r]){
                A[q] = A[p];
                q--;
                p--;
                }
            else{
                A[q] = B[r];
                q--;
                r--;
            }
        }
        while(p>=0){
            A[q] = A[p];
            q--;
            p--;
        }
        while(q>=0){
            A[q] = B[r];
            q--;
            r--;
        }
        
    }

 

posted @ 2015-04-01 09:35  niuer++  阅读(102)  评论(0编辑  收藏  举报