所以我有一个接受数组大小的方法。我的方法使数组的一半为 0。
int [] arrary2 = new int[arraySize];
for(int i = 0; i < arraySize/2; i++){
arr2[i] = 0;
}
//do rest of code?
return array2;
如何将数组后半部分的一半变为 1,依此类推。 例如大小为 14 的数组,但数组大小可以是任意大小?
[0,0,0,0,0,0,0,1,1,1,1,2,2,3]
最佳答案
粗略算法:
- 计算剩下要做的事情的一半(注意奇数/偶数)
- 用当前值填充
- 重复
示例代码:
public static int[] createArray(int size)
{
int[] array = new int[size];
int half = (size / 2) + (size % 2);
int index = half;
int value = 0;
for (int i = 0; i < size; i++) {
if (i == index) {
half = (half / 2) + (half % 2);
index += half;
value++;
}
array[i] = value;
}
return array;
}
示例输出:
15 => 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3
14 => 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3
关于Java数组改变一半的值等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459493/