题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
思路
双指针
因为A的空间是足够大的,所以将A数组和B数组中的最大的依次放在A的最后
所以双指针,分别指向A和B的尾部,比较其大小,大的放在A的最后
代码
class Solution { public: void merge(int A[], int m, int B[], int n) { // A的空间大,所以放在A中 int i = m-1; int j = n-1; int k = m+n-1; while(i>=0 && j>=0){ if(A[i]>B[j]){ A[k] = A[i]; i--; k--; } else{ A[k] = B[j]; j--; k--; } } while(i>=0){ A[k--] = A[i--]; } while(j>=0){ A[k--] = B[j--]; } } };