アレイは、以前は未知点で回転させたに従って昇順と仮定する。
(例えば、配列[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
<1>二分法
クラス解決{ パブリック: INT findMin(ベクトル< INT >&NUMS) { 場合(nums.size()== 0)リターンNULL。 int型 MIN_NUM = INT_MAX。 int型ミドル= 0 ; int型は =左0を。 int型の右= nums.size() - 1 ; しながら、(左< 右) { 中央 =(右、左)+左/ 2 。 もし(NUMS [左] <= NUMS [中央])// 左边升序 { MIN_NUM = 分(NUMS [左]、MIN_NUM)。 左 +中間= 1 。 } 他 // 右边升序 { MIN_NUM = 分(MIN_NUM、NUMS [中央])。 右 = ミドル。 } COUT <<左<< " || " <<右<< ENDL。 } 戻り分(MIN_NUM、NUMS [左])。 } }。