方法:双指针
从数组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--]; } } };