这是leetcode中的合并两个排序数组的题目,题目为:A和B两个数组已经排序,A可以容纳A和B的数组,我的思路为:
将A往后移,因为移动之后就不用再移动了,然后合并就不需要总是去赋值。
/*
* to this problem, we can move the whole A back, yes a good solution!
*/
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
if(n==0)
return;
for(int i=m;i>0;i--){
A[i+n-1]=A[i-1];
}
int k=0,l=0,h=0;
while(k<m&&l<n){
if(A[k+n]<B[l]){
A[h]=A[k+n];
h++;
k++;
}
else{
A[h]=B[l];
h++;
l++;
}
}
while(k<m){
A[h]=A[k+n];
h++;
k++;
}
while(l<n){
A[h]=B[l];
h++;
l++;
}
}
};
(本文完)