Java用最大值初始化大数组



如何初始化所有Integer.MAXVALUE的大小为1000 * 1000 * 1000 * 1000的数组

例如,我想让这个int[][][][]dp = new int [1000][1000][1000][1000];都有最大值,因为以后我需要比较一个最小值。

I tried

int [] arr = new int arr[N];
Arrays.fill(arr,Integer.MAXVALUE);

,但它不与多维数组工作,有人可以帮助吗?

你必须这样做来填充你的多维数组:

for (int i = 0; i < dp.length; i++) {
    for (int j = 0; j < dp[i].length; j++) {
        for (int k = 0; k < dp[j].length; k++) {
            Arrays.fill(dp[i][j][k], Integer.MAX_VALUE);
        }
    }
}

您将无法初始化new int[1000][1000][1000][1000],除非您至少有3.64 tb的内存。更不用说,如果你有那么多内存,那要花多长时间。

你需要一些非常专业的东西,比如Colt来生成所谓的稀疏矩阵。你需要稍微改变一下你的逻辑,而不是测试一个Integer.MAX_VALUE,你测试看看是否有东西存在于一个位置(默认为零),如果它不存在,然后考虑它Integer.MAX_VALUE,不管它。

这里假设您只插入值为< Integer.MAX_VALUE的可能数据的一小部分。

fill将需要数组和每个维度填充的值作为参数。比如fill(array, 0,0,0)或者fill(array, maxValue, maxValue, maxValue)。

欢呼,

最新更新