Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
从后往前即可。
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int index = m + n;
for (--m, --n; m >= 0 && n >= 0;) {
if (A[m] <= B[n]) {
A[--index] = B[n--];
}
else {
A[--index] = A[m--];
}
}
while (m >= 0) {
A[--index] = A[m--];
}
while (n >= 0) {
A[--index] = B[n--];
}
}
};
===================第二次=====================
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int index = m + n;
while (m > 0 && n > 0) {
if (A[m-1] >= B[n-1]) {
A[--index] = A[--m];
}
else {
A[--index] = B[--n];
}
}
while (n > 0) {
A[--index] = B[--n];
}
}
};