Menu
CoddyTech

Find Peak Element

ふつう二分探索python iconjava iconcpp iconc iconjs icon+10

配列 nums は増加した後に減少します。あるインデックスまでは各値がその直前の値より大きく、そのインデックス以降は各値がその直前の値より小さくなります。どちらかの部分は空でもよいため、配列は増加するだけ、または減少するだけの場合もあります。折り返し位置の値がピークであり、隣接するすべての値より大きい唯一の値です。

O(log n) 時間でピークのインデックスを返してください。

関数

findPeakElement(nums: integer-array) → integer
numsinteger-array
値が上昇して1つのピークに達し、その後下降する
戻り値integer
ピークのインデックス

制約

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] が有効なすべての i に対して成り立つ。
  • numsはある1つのインデックスまで厳密に増加し、その後は厳密に減少するため、ピークはちょうど1つです。

例

入力
nums = [2, 5, 9, 4, 1]
出力
2
説明
値は2、5、9と増加し、その後4、1と減少します。転換点は9で、インデックスは2です。
challenge icon

発展問題

隣接するどの2つのセルも等しくないグリッドでは、ピークとは、上下左右の最大4つの隣接セルより大きいセルのことです。すべてのセルを調べずにピークを見つけられますか?

コードをリセット
def findPeakElement(nums):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

nums = [2, 5, 9, 4, 1]

期待される出力

2