这个解决方案对我来说很好,但我有个问题。当我调试我的程序时,我注意到例如对于这个输入(当我测试一个程序正确工作时)->int[]arr={1,3};int[]arr1={2,4};由于某种原因,我看到第一个数组的索引在增加,调试器显示在同一阶段,数组超出了范围。这个程序也适用于此,但我想知道如何在理论上是可能的,以解决这个或它没有意义,一切正常工作?我还尝试了if()的各种检查,但都没有解决问题。我希望我给你带来了问题的本质。
public static int[] mergeArr(int[] arr1, int[] arr2) {
int[] result = new int[arr1.length + arr2.length];
int i = 0;
int j = 0;
int k = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
result[k++] = arr1[i];
i++;
} else {
result[k++] = arr2[j];
j++;
}
System.arraycopy(arr1, i, result, k, arr1.length - i);
System.arraycopy(arr2, j, result, k, arr2.length - j);
}
return result;
}
}
暂无答案!
目前还没有任何答案,快来回答吧!