方法一:从前往后。
public void merge(int[] nums1, int m, int[] nums2, int n){
int[] nums3=new int[m];
System.arraycopy(nums1,0,nums3,0,m);
int i=0;//指向nums3
int j=0;//指向nums2
int len=m+n;
for(int k=0;k<len;k++){
if(i==m){
nums1[k]=nums2[j++];
}
else if(j==n){
nums1[k]=nums3[i++];
}
else if(nums3[i]<nums2[j]){
nums1[k]=nums3[i++];
}
else{
nums1[k]=nums2[j++];
}
}
}
方法二:从后往前
public void merge(int[] nums1, int m, int[] nums2, int n){
int i=m-1;
int j=n-1;
int k=nums1.length-1;
while(k>=0){
if(i==-1){
System.arraycopy(nums2,0,nums1,0,j+1);
break;
}
else if(j==-1){
break;
}
else if(nums1[i]>=nums2[j]){
nums1[k--]=nums1[i--];
}
else {
nums1[k--]=nums2[j--];
}
}
}