给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2\n中的元素数目。给出 O(1)复杂度方法
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1;
int j = n - 1;
int k = m + n - 1;
while (i >= 0 && j >= 0) {
if (nums1[i] > nums2[j]) {
nums1[k--] = nums1[i--];
} else {
nums1[k--] = nums2[j--];
}
}
while (j >= 0) {
nums1[k--] = nums2[j--];
}
}
}
num1的第i位和num2的第j位相乘的结果在乘积中的位置是 [i+j, i+j+1]
例如 “123” * “45”, 123的第3位 num1[2] = 3 和45的第2位 num2[1] = 5 乘积 15 存放在数组的 muls[3], muls[4]中
数组索引 0 1 2 3 4
num1 1 2 3
num2 4 5
---------
3*5 1 5
2*5 1 0
1*5 0 5
---------
3*4 1 2
2*4 0 8
1*4 0 4
---------
结果 0 5 5 3 5