Menu
CoddyTech

Find Peak Element

보통이진 탐색python iconjava iconcpp iconc iconjs icon+10

배열 nums는 올라갔다가 내려갑니다. 즉, 어떤 인덱스에 도달할 때까지 각 값은 바로 앞의 값보다 크고, 그 인덱스 이후의 각 값은 바로 앞의 값보다 작습니다. 어느 한쪽 부분은 비어 있을 수 있으므로, 배열은 올라가기만 하거나 내려가기만 할 수도 있습니다. 전환 인덱스의 값이 꼭대기이며, 이 값은 양옆의 모든 값보다 큰 유일한 값입니다.

O(log n) 시간에 꼭대기의 인덱스를 반환하세요.

함수

findPeakElement(nums: integer-array) → integer
numsinteger-array
값은 상승하여 하나의 정점에 도달한 다음 하락한다
반환값integer
최고점의 인덱스

제약 조건

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1]가 모든 유효한 i에 대해 성립합니다.
  • nums는 한 인덱스까지 엄격히 증가하고 그 이후에는 엄격히 감소하므로, 꼭짓점은 정확히 하나입니다.

예제

입력
nums = [2, 5, 9, 4, 1]
출력
2
설명
값은 2, 5, 9로 올라간 다음 4와 1로 내려갑니다. 전환점은 9이며, 인덱스는 2입니다.
challenge icon

후속 질문

서로 인접한 두 셀의 값이 같은 셀이 없는 격자에서, 봉우리는 최대 네 개의 이웃 셀보다 값이 큰 셀입니다. 모든 셀을 읽지 않고도 봉우리를 찾을 수 있을까요?

코드 초기화
def findPeakElement(nums):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

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

예상 출력

2