题意:给出两个有序数组nums1和nums2,初始化数分别为m,n。现在要合并两个数组,假定nums1足够大。
初步分析:
遍历两个数组,将nums2中大小合适的一批元素插入到nums1中。
发现太麻烦,参考别人思路,总长度是固定的,所以,倒着来。
代码:
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int sum = m+n-1; //描述新数组的指针
m--;
n--;
while(m>=0||n>=0){ //一个一个的放
if(m>=0 && n>=0)
{
if(nums1[m] > nums2[n]) //谁更大放谁
{
nums1[sum] = nums1[m];
m--;
}
else
{
nums1[sum] = nums2[n];
n--;
}
}
else if(m<0){ //nums2完了
nums1[sum]=nums2[n];
n--;
}
else if(n<0){ //nums1完了
nums1[sum]=nums1[m];
m--;
}
sum--;
}
}
}