题目
解法
逆向双指针
算法数学验证
是先假设符合空间要求,化简公式得到的p2正好取值在[0, n],符合要求
代码
public void merge(int[] nums1, int m, int[] nums2, int n) {
int a = m - 1, b = n - 1, c = m + n - 1;
while (a >= 0 && b >= 0) {
nums1[c--] = nums1[a] > nums2[b] ? nums1[a--] : nums2[b--];
}
while (a >= 0) {
nums1[c--] = nums1[a--];
}
while (b >= 0) {
nums1[c--] = nums2[b--];
}
}