條件是輸入:arr = [1,0,2,3,0,4,5,0] 輸出:[1,0,0,2,3,0,0,4] 說明:呼叫您的函式后,輸入陣列修改為:[1,0,0,2,3,0,0,4]
public void duplicateZeros(int[] arr) {
int length = arr.length;
for(int i=0;i<length;i ){
if(arr[i]==0){
arr[i 1]=arr[i];
}
}
}
}
錯誤是
java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8
at line 6, Solution.duplicateZeros
at line 54, __DriverSolution__.__helper__
at line 84, __Driver__.main
為什么我收到這個錯誤?
uj5u.com熱心網友回復:
嘗試這個。
public static void duplicateZeros(int[] arr) {
int length = arr.length;
for (int i = 0; i < length; i ) {
if (arr[i] == 0) {
System.arraycopy(arr, i, arr, i 1, length - i - 1);
i;
}
}
}
public static void main(String[] args) {
int[] a = { 1, 0, 2, 3, 0, 4, 5, 0 };
duplicateZeros(a);
System.out.println(Arrays.toString(a));
}
輸出:
[1, 0, 0, 2, 3, 0, 0, 4]
uj5u.com熱心網友回復:
您的解決方案是錯誤的,并且i 1會導致最后一個 i 的索引越界。
您需要一些結果索引,j在此處命名:
[1,0,2,3,0,4,5,0]
i 0 1 2 3 4 5 6 7 ---> for i
j? 0 1 2 3 4 5 6 7
[1, 2,3, 4,5, 0,0,0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355602.html
上一篇:從字串陣列中洗掉空格的問題
下一篇:如何將一堆資料添加到鏈表中
