これは一種の宿題の質問です。私はかなり長い間考えていて、いくつかの解決策を思いつきましたが、より良い解決策が存在すると思います。
配列に 1 回だけ現れる要素 (int) があるかどうかを判断する最も速い方法は何ですか? どの要素も何回でも出現できます。{3, 1, 4, 1, 4, 3} は false を返しますが、{3, 1, 4, 1, 4, 1} は true を返します (3 は 1 回表示されます)。
すでに学んだこと (すべての基本、再帰、oop、クイックソートを含む検索とソートのアルゴリズム) のみを使用することが許可されているため、ハッシュ テーブルを作成することはできません。
これまでのところ、私が思いついた最善の実用的な解決策は、クイックソートを使用して並べ替えてから実行することです( O(nlogn) )。ハッシュテーブルに似た場所(ただし、その配列は実際に実装するには大きすぎます)( O(n) )
O(n) 時間でこれを行う別の (実用的な) 方法はありますか?
編集: TA から回答を得たところ、私が聞いた提案された O(n) ソリューションは非現実的なもの (私が提案したものと同じまたは類似) であったため、使用しないように言われました。最善の実用的な答え (ハッシュ テーブルを除く) は O(nlogn) 時間であると 99% 確信しています。