配列内の重複した値を削除する独自の実装を作成するように依頼されました。これが私が作成したものです。しかし、1,000,000 個の要素をテストした後、完了するまでに非常に長い時間がかかりました。アルゴリズムやバグを改善するためにできることはありますか?
などを使用Set
しないで、独自の実装を作成する必要があります。または、HashSet
イテレータなどの他のツール。重複を削除するための単なる配列。
public static int[] removeDuplicates(int[] arr) {
int end = arr.length;
for (int i = 0; i < end; i++) {
for (int j = i + 1; j < end; j++) {
if (arr[i] == arr[j]) {
int shiftLeft = j;
for (int k = j+1; k < end; k++, shiftLeft++) {
arr[shiftLeft] = arr[k];
}
end--;
j--;
}
}
}
int[] whitelist = new int[end];
for(int i = 0; i < end; i++){
whitelist[i] = arr[i];
}
return whitelist;
}