我有一个数组[1,1,1,1,1,1],我想创建一个for循环,该循环将在所有1之间插入0。
我尝试使用
for(int i=0;i<array.length;i+2) {
insertItem(array,i,0);
}
但这是行不通的,因为每次插入项目时数组的长度都会增加,并且我的客户端会崩溃。
最佳答案
我假设insertItem
根据需要增加array
的长度。在这种情况下,诀窍是在开始循环之前计算所需的新插入次数(array.length - 1
)。新值插入在2*i+1
给定的奇数位置
int n = array.length - 1;
for(int i=0; i<n; i++) {
insertItem(array, 2*i+1, 0);
}
一种替代方法是创建一个新数组,并像这样填充它:
int[] narr = new int[2*arr.length-1];
for(int i=0; i<narr.length; i++) {
narr[i] = (i % 2 == 0) ? arr[i/2] : val;
}