合并两个有序数组 难度:简单 这道题刚开始做的时候尝试从头开始比较,发现行不通,所以选择先确定后面的最大值,代码完成后提交不通过,最后看题解发现是没有处理nums2 中还有数据未拷贝完全的情况,再最后将nums2的数据拷贝到nums1头部即可
public static void main(String[] args) {
int[] nums1 = new int[]{2,0};
int[] nums2 = new int[]{1};
int m = 1;
int n = 1;
merge(nums1, m, nums2, n);
System.out.println(nums1[0]);
System.out.println(nums1[1]);
}
public static void merge(int[] nums1, int m, int[] nums2, int n) {
if (m==0){
for (int i = 0;i<n;i++){
nums1[i] = nums2[i];
}
return;
}
if (n==0){
return;
}
int len = m+n-1;
while(m!=0 && n!=0){
if (nums1[m-1]>nums2[n-1]){
nums1[len--] = nums1[m-1];
m--;
}else{
nums1[len--] = nums2[n-1];
n--;
}
}
System.arraycopy(nums2, 0, nums1, 0, n);
}
控制台打印: 1 2
|