如何初始化所有Integer.MAXVALUE
的大小爲1000 * 1000 * 1000 * 1000
的數組?Java以最大值初始化大數組
例如,我想使這個int[][][][]dp = new int [1000][1000][1000][1000];
都具有最大值,因爲以後我需要比較最小值。
我試圖
int [] arr = new int arr[N];
Arrays.fill(arr,Integer.MAXVALUE);
,但它不與多維數組工作,誰能幫助?
如何初始化所有Integer.MAXVALUE
的大小爲1000 * 1000 * 1000 * 1000
的數組?Java以最大值初始化大數組
例如,我想使這個int[][][][]dp = new int [1000][1000][1000][1000];
都具有最大值,因爲以後我需要比較最小值。
我試圖
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的的記憶。更何況,如果你有這麼多的記憶,將需要多長時間。
當它,我只有3.5 TB的內存... – MeBigFatGuy 2011-04-29 05:47:19
哈哈很不錯:D – 2011-04-29 06:33:25
您需要非常專業的東西,如Colt來生成所謂的Sparse Matrix。你需要稍微改變一下你的邏輯,而不是根據你測試的Integer.MAX_VALUE
進行測試,看看某個位置是否存在某個事物(默認爲零),如果它不考慮Integer.MAX_VALUE
並且保持獨立。
這假設您只插入一小部分可能的數據值爲< Integer.MAX_VALUE
。
填充將需要作爲參數數組和填充每個維度的值。說填充(數組,0,0,0)或在你的情況下填充(數組,maxValue,maxValue,maxValue)。
歡呼聲,
你想填充一個數組中的每一個值有一萬億的可能性嗎? – Mikecito 2011-04-29 05:32:38