-154の特別Leetcode二分法。II最低回転を見つけるためにソートされた配列(回転さソートアレイIIの最小を見つけます。)
配列に従って昇順は、以前は未知点に回転したと仮定する。
(例えば、アレイ [0,1,2,4,5,6,7]
になるかもしれ [4,5,6,7,0,1,2]
)。
最小の要素を検索します。
アレイ内の繰り返し要素が存在し得ることに留意されたいです。
例1:
入力:[1,3,5] 出力:1
例2:
入力:[2,2,2,0,1] 出力:0
で153個の質問のように、しかし、この問題は重複した数字を持っていますが、153が与えられますコードの状況:3313
このサンプルでは、我々は唯一の153を必要とする、中間ノード1および3から回転させて以下の変更は、コードにすることができる。
もしNUMS [中間] == NUMS [R ] r--の上に、それらは右直接省略するように、2と同じであるからです。
クラスソリューション{ 公共 のint findMin(INT [] NUMS){ 場合(nums.length == 0 || NUMS == NULL)戻り 0 。 int型の L = 0 ; INTの R = nums.length - 1 。 一方、(L < R){ int型 1 >>>ミッド=(L + R) 。 もし(NUMS [中間]> NUMS [R]){ L =ミッド+ 1 。 } そう であれば(NUMS [中間] < NUMS [R]){ R = ミッド。 } 他{ R - 。 } } 戻りNUMS [L]。 } }