トピックへのリンク:https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/
私たちは、山と呼ばれる配列の次の属性に準拠します:
A.length> = 3が
1ように[0] <[1 - 0の<私はA.length <本である ] <... A [I-1] <A [i]が> A [I + 1]>。 ..> [A.length - 1]
指定されたアレイは山のように決定されるため、任意[0] <a [1] <... A [i-1] <a [i]> 満たすために戻り Aを[ I + 1]> ...> [A.length - 値1] Iインチ
例1:
入力:[0,1,0]
出力:1
例2:
入力:[0,2,1,0]
出力:1
ヒント:
。3 <= A.length <= 10000
0 <= A [I] <= ^ 10 6
山Aは、上記のように定義されます
バイナリ検索:
1 INT peakIndexInMountainArray(INT * A、INT ASIZE){ 2 のint L = 0、R = ASize- 1 。 3 しばらく(L <= R){ 4 INTミッド= 1 +(RL)/ 2 。 5 もし([中間]> A [中間+ 1 ] && A [中間]> A [半ば1 ]){ 6 リターンミッド。 7 } そう であれば(([中間]> A [中間+ 1 ])&& A [中間] <[半ば1 ]){ 8 R =半ば1 。 9 } 他{ 10 、L =ミッド+ 1 。 11 } 12 } 13 リターン - 1 。 14 }
注文トラバーサル:
1 INT peakIndexInMountainArray(INT * A、INT ASIZE){ 2 int型のインデックス= 0 。 3 のために(int型 i = 1 ; iは<ASize- 1 ; iは++ ){ 4 もし([I- 1 ] <[I] && A [i]が> A [I + 1 ]){ 5 インデックス= I。 6 ブレーク; 7 } 8 } 9 リターン指数。 10 }