LeetCode: Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array.

最开始的想法是,设两个指针,从0开始,分别标记数组A,B当前进行到的位置。通过不断比较和移动指针,实现数组的融合。

但是发现,数组B中的值会覆盖掉A中还未比较的值,所以插入的时候就要进行数组的移动。显然非常不理想。

 

后来学习到,可以从数组的后面开始比较。两个指针分别从数组的最后面开始,这样就不会有覆盖的情况发生。

 1 public static void merge(int A[], int m, int B[], int n) {
 2         int i=m-1; int j=n-1;
 3         int p = n+m-1;
 4         for (;i>=0 && j>=0;) {
 5             if(A[i]<B[j]) { 
 6                 A[p--] = B[j--];
 7             }
 8             else {
 9                 A[p--] = A[i--];
10             }
11         }
12         while (i>=0) {
13             A[p--] = A[i--];
14         }
15         while (j>=0) {
16             A[p--] = B[j--];
17         }
18     }

 

posted on 2014-01-17 19:11  longhorn  阅读(145)  评论(0编辑  收藏  举报

导航