public void merge(int[] nums1, int m, int[] nums2, int n) {
/**
* 一个数组越界问题,搞半天。花了20分钟想到正确的思路却
* 没有第一次实现出来,因为问题想的不够全面。可是给的用例也不够啊??这是你自己的原因
* 其次好久没写数组类的题目了,对数组下标居然不够敏感,醉了。其次,就是对于数组越界情况一脸蒙蔽啊
* 还有num2复制到num1,我没有想的很清楚,num2可能没复制完这个情况,应该我处理完数组越界情况下,我可能又要懵逼
* 怪不得通过率只有44.1%
不过自己提前用排序api写出
*/
int nums = m+n-1;
int n1 = m-1;
int n2 = n-1;
if(n==0){
return;
}
while(n1>=0&&n2>=0){
if(nums2[n2]>nums1[n1])
{
nums1[nums] = nums2[n2];
n2--;
nums--;
}else{
nums1[nums] = nums1[n1];
n1--;
nums--;
}
}
if(n2>=0){
for(int i=0;i<=n2;i++){
nums1[i] = nums2[i];
}
}
}