Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 중앙 정점 배열의 정점 찾기

<시간/>

중앙 정점 어레이

배열을 중앙 정점 배열이라고 합니다. 다음 속성이 유지되는 경우 -

  • 길이>=3

  • 0

    • arr[0]

    • arr[i]> arr[i+1]> ...> arr[arr.length - 1]

문제

첫 번째이자 유일한 인수로 숫자 배열, arr를 취하는 JavaScript 함수를 작성해야 합니다.

입력 배열은 중앙에 정점이 있는 배열입니다. 우리 함수는 이 중앙 정점 배열의 정점 인덱스를 반환해야 합니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];

출력

const output = 4;

출력 설명

인덱스 4(15)의 요소가 이 배열의 피크 요소이기 때문입니다.

예시

다음은 코드입니다 -

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];
const findPeak = (arr = []) => {
   if(arr.length < 3) {
      return -1
   }
   const helper = (low, high) => {
      if(low > high) {
         return -1
      }
      const middle = Math.floor((low + high) / 2)
      if(arr[middle] <= arr[middle + 1]) {
         return helper(middle + 1, high)
      }
      if(arr[middle] <= arr[middle - 1]) {
         return helper(low, middle - 1)
      }
      return middle
   }
   return helper(0, arr.length - 1)
};
console.log(findPeak(arr));

출력

4