Big O表記に関して、次の問題を解決する最良の方法は何ですか?
サイズ N の文字列配列を指定します。配列を反復処理し、配列内で最も多く繰り返された文字列を含む単一の文字列を返します。また、返される文字列は、配列内にあった回数だけ文字列を繰り返す必要があります。元。配列内で "Bob" が最も多く見つかった文字列であり、3 回見つかった場合、返される文字列は "BobBobBob" になります。
これを行う方法を考えて、HashMap などを使用して一意のキー値を強制し、文字列をキーとして保存し、頻度を値として保存することを考えていました。すべてが完了したら、値を比較するマップを反復処理する必要があります..
全体として、これにより O(n) + O(n) が得られます...もっと良い方法があるかどうか疑問に思っています
編集:
O(n) よりもうまくできないことは理解していますが、ここでの問題は、最初の配列を反復処理して HashMap を構築したら、次にハッシュマップを反復処理して、どのペアが最も高い値を持つかを判断する必要があることです。 be O(n) ..基本的に、リスト全体を1回だけ反復する必要がある場合にこれを行う方法はありますか