使用原数组空间,防止影响前面未合并元素,从后面开始遍历。双指针分别指向两个数组最后元素,比较合并,合并的指针前移,直到其中一个数组合并完成,再直接合并另一个数组。
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int a = m;
int b = n;
int c = m + n - 1;
while(a && b){
if(A[a-1] > B[b-1]){
A[c] = A[a-1];
c--;
a--;
}else{
A[c] = B[b-1];
c--;
b--;
}
}
while(a){
A[c] = A[a-1];
c--;
a--;
}
while(b){
A[c] = B[b-1];
c--;
b--;
}
}
};
京公网安备 11010502036488号