思路
这题的思路很容易,两个数组谁小放谁,为了不开辟新的空间,可以从后向前遍历,最后注意边界即可。
题解
public static void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1;
int j = n - 1;
for(int k = m + n -1; k >= 0; k--) {
if(j < 0 || (i >= 0 && nums1[i] >= nums2[j])) {
nums1[k] = nums1[i];
i--;
} else {
nums1[k] = nums2[j];
j--;
}
}
}
public static void main(String[] args) {
int[] nums1 = new int[] {1,2,3,0,0,0};
int[] nums2 = new int[] {2,5,6};
merge(nums1, 3, nums2, 3);
for (int i : nums1) {
System.out.print(i + " ");
}
}