私は最近、次のようであるプログラミングの問題に直面した:して回転
ソートされた配列が与えられ、配列はいくつかの未知の点で回転させて、私が見つけなければなりませんその中の最小要素。配列には重複も含めることができます。例えばのために
:
Input: {5, 6, 1, 2, 3, 4}
Output: 1
Input: {2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2}
Output: 0
私はシンプルなソリューションを踏襲し、完全な配列を谷と最小値を求めるトラバースすることです。この解は時間O(n)を必要とします。最小要素はそれより前の要素が大きい要素であるという事実を理解しています。そのような要素が存在しない場合、回転はなく、最初の要素が最小になります。
しかし、私はO(Logn)ソリューションを求められました。 O(Logn)時間にそれを解決する方法はありますか?私の頭の上オフ
バイナリ検索は、あなただけの回転のための余分な条件を追加する必要があり、 'O(n個のログ)'のためのソリューションです。 –
あなたはこのリンクをチェックすることができます。http://www.geeksforgeeks.org/find-minimum-element-in-a-sorted-and-rotated-array/ – vikiiii
私の大学での最初の仕事の面接の質問でした。面接官はそれを「Tソートされた配列」と呼びましたが、その用語がどの程度普及しているのかわかりません。 –