如何初始化所有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)。
欢呼,