Java数组改变一半的值等

标签 java arrays sorting

所以我有一个接受数组大小的方法。我的方法使数组的一半为 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/

相关文章:

java - 在java中快速解析数字字符串

c++ - 使用自定义比较器排序时出现运行时错误

c++ - 遍历多维数组时遇到问题

python - 如何替换 numpy 数组中的值列表?

javascript - 日期列未在 ng-table 中排序

c# - C# 中的 MergeSort 实现

java - 计算最后一列素数

java - Android Log类中的d方法

java - 如何只读电影名称?

java - 在一帧中将对象添加到 Arraylist,但无法在第二个已打开的帧中访问它