由于nums1数组的大小等于n+m所以我们可以从nums1[n+m-1]的位置进行向前遍历,不用担心会覆盖到nums1前面的数值,因为一旦m==0的时候,nums前面的数就可以不用动了。
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int cnt=m+n;
while (m>0&&n>0)
{
if(nums1[m-1]>nums2[n-1])
{
nums1[cnt-1]=nums1[m-1];
cnt--;
m--;
}
else
{
nums1[cnt-1]=nums2[n-1];
cnt--;
n--;
}
}
if(m==0)
{
for(int i=0;i<n;i++)
{
nums1[i]=nums2[i];
}
}
}
}