O(n)時間とO(1)余分なスペースで最大反復回数O(n)時間内の最大反復数とO(1)余分なスペースを確認してください
私はカウント配列を維持するソートフェーズを使うことができると思いますが、それはO(N)で実行できます。私は正しい?
しかし余分なスペースを処理する方法。他の効率的なアルゴリズムはありますか?
O(n)時間とO(1)余分なスペースで最大反復回数O(n)時間内の最大反復数とO(1)余分なスペースを確認してください
私はカウント配列を維持するソートフェーズを使うことができると思いますが、それはO(N)で実行できます。私は正しい?
しかし余分なスペースを処理する方法。他の効率的なアルゴリズムはありますか?
これは可能なことではありませんが、アレイの可能な数字についての詳細な知識はありません。 (c = O(1)
)を使用するように準備されている一定量のメモリについては、ポイントn-1
に正しい回答の可能性があり、最後の数字だけがネクタイを破るようなシーケンスがあります。この場合、定数メモリc
のアルゴリズムは、1回のパスで解を見つけることができません。これは、いくつかの(一定量の)パスについても同様に機能します。
代わりにできることを見てみましょう。
k
固有の番号であることがわかっている場合、我々はk
数字はする必要がない場合、一定のルックアップコストでカウント配列(または順不同マップを保つことによってO(k)
余分なスペースとO(n)
で答えを見つけることができますシーケンシャル)。しかし、k<n
以外のk
をバインドできない場合、これは最悪の場合にはO(n)
余分なスペースになります。O(n log(n))
にソートすると、答えはO(n)
になります。したがって、合計の複雑さはO(n log(n))
であり、余分なスペースはO(1)
です。
「最大繰り返し数」は、最も多く発生する数または繰り返される最大数を意味しますか? –
最も多く発生する番号 – Garrick
これは可能だとは思わない。私が考えることができる最良のものはソートされた配列( 'O(n * log(n))')+ソートされた配列( 'O(n)')に対する1つのスイープです。 – example