ホームページ >Java >&#&チュートリアル >セットを使用せずに配列から重複を効率的に削除するにはどうすればよいですか?
設定に頼らずに配列から重複を効率的に削除する
配列から重複要素を削除するためのカスタマイズされたソリューションを作成することに努めました。しかし、パフォーマンスのボトルネックが発生しています。この実装を最適化するために、アプローチの欠点を分析し、代替戦略を提案します。
アルゴリズムの分析
アルゴリズムは、それぞれを比較して重複を検索しようとします。要素と後続のすべての要素。この徹底的な比較により、時間計算量は O(n^2) になります。大規模な配列の場合、この戦略は非常に非効率になる可能性があります。
最適化されたアプローチ
パフォーマンスを大幅に向上させるために、次の最適化を検討できます:
代替ソリューション
一方、前述の最適化は可能です。アルゴリズムのパフォーマンスを向上させるには、他の確立されたものを考慮することもできますテクニック:
実装
最適化されたアプローチに基づいて、ハッシュ マップを利用したアルゴリズムの修正バージョンは次のようになります:
public static int[] removeDuplicatesWithoutSet(int[] arr) { HashMap<Integer, Boolean> map = new HashMap<>(); int end = arr.length; for (int i = 0; i < end; i++) { if (map.containsKey(arr[i])) { int shiftLeft = i; for (int k = i + 1; k < end; k++, shiftLeft++) { arr[shiftLeft] = arr[k]; } end--; i--; } else { map.put(arr[i], true); } } int[] whitelist = new int[end]; for (int i = 0; i < end; i++) { whitelist[i] = arr[i]; } return whitelist; }
以上がセットを使用せずに配列から重複を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。