方法:双指针
从数组A、B的最后一个元素开始遍历,比较大小根据规则填充到A数组中。
时间复杂度:o(n)
空间复杂度:o(1)
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i = m - 1;
int j = n - 1;
int idx = m + n - 1;
while (i >= 0 && j >= 0) {
if (A[i] > B[j])
A[idx--] = A[i--];
else
A[idx--] = B[j--];
}
// 剩余元素直接填充
if (i >= 0) {
while (idx >= 0)
A[idx--] = A[i--];
}
if (j >= 0) {
while (idx >= 0)
A[idx--] = B[j--];
}
}
};

京公网安备 11010502036488号