题目来源:
https://leetcode-cn.com/problems/merge-sorted-array/
题目描述:
解题思路:
由题目已知了数组nums1有足够的空间,因此我就不需要自己重新new一个数组了。利用i,j分别从后向前遍历两个数组,找到最大的那个数,放在nums1的m+n-1的位置。然后依次向前遍历。当i率先小于0时,那么将num2数组中剩余部分拷贝到num1数组中,如果j率先小于0那么则不用处理。
代码如下:
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--];
}
}
}