-153のLeetcodeテーマの二分法。探し最小回転ソート配列(回転したソート配列で最小値を求めます)
配列に従って昇順は、以前は未知点に回転したと仮定する。
(例えば、アレイ [0,1,2,4,5,6,7]
になるかもしれ [4,5,6,7,0,1,2]
)。
最小の要素を検索します。
あなたは、配列内の要素のない重複がないと仮定することができます。
例1:
入力:[3,4,5,1,2] 出力:1
例2:
入力:[4,5,6,7,0,1,2] 出力:0
もちろん、私たちは、半分は増えていないことを見つけるために、バイナリ検索を使用する必要があります。
だから、長いNUMS [中期]> NUMS [Rとして ] 、その後、期間の中頃権利が増加されていません。
ACコード:
クラスソリューション{ 公共 の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 。 } 他{ R = ミッド。 } } return nums[L]; } }