私は0から配列の長さまでの配列を持っていますが、いくつかの数がなくなっています。HashMap with Integers long time
public static Integer findNumber(Integer[] array){
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(Integer number : array){
map.put(number, 1);
}
for(Integer i=0; i<array.length; i++){
if(map.get(i)==null)
return i;
}
return -1;
}
私はこれは良い解決策になるつもりだったと思ったが、置くことははるかに高速でカウント重複してソリューションを並べ替え、本当に長い時間がかかり、私がなぜ分かりません。 Hash for IntegerはInteger自体であるため、ハッシュを数えると時間が失われず、等号で反復されることもありません(数字に依存して、私は1つの複製だけを使って例を選びました)。ここで明白な何かが欠けているような気がする。私は初期容量と負荷率を指定しようとしましたが、状況を悪化させるだけです。何とかこれを最適化できますか?
パッティングには時間がかかりますが、解決策を見つけるまで繰り返すのではなく、パッティングは実行時間の95%と同じです。
多くのボクシング/アンボクシングのために遅くなる可能性がありますか? – kaqqao
セットはマップより少し速くなります。 –
私もそう思っていました。私は基本的なintで始まり、次にIntegerのために変更しました。何も変更しませんでした。私はそれが物事を遅くしても、それをずっと遅くしないと思う。 – Haratino