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

JavaScript에서 인접 요소보다 큰 요소 찾기

<시간/>

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

함수는 배열에서 바로 오른쪽에 있는 숫자와 바로 왼쪽에 있는 숫자 둘 다보다 큰 숫자 하나를 찾아서 반환해야 합니다. 배열에 그러한 요소가 두 개 이상 있으면 함수는 그 중 하나를 반환해야 합니다.

예를 들어 -

입력 배열이 -

인 경우
const arr = [3, 6, 7, 9, 8, 2, 5];

그러면 출력은 다음과 같아야 합니다. -

const output = 9;

이 질문은 피크 요소를 찾아야 하므로 이진 검색 알고리즘의 수정된 버전을 사용할 수 있습니다.

동일한 단계는 -

  • 모든 요소를 ​​살펴보세요.

  • 다음 요소와 이전 요소가 모두 현재보다 작으면 해결책을 찾은 다음 현재의 인덱스를 반환합니다.

  • 다음 요소가 현재보다 크면 오른쪽에 피크가 있어야 하고 오른쪽에 재귀적으로 표시되어야 합니다.

  • 이전 요소가 현재보다 크면 왼쪽에 피크가 있어야 하고 왼쪽에 재귀적으로 표시되어야 합니다.

예시

다음은 코드입니다 -

const arr = [3, 6, 7, 9, 8, 2, 5];
const greaterThanAdjacent = (arr = [], start = 0, end = arr.length) => {
   let mid = start + Math.floor((end - start) / 2);
   let curr = arr[mid];
   let prev = mid-1 < 0 ? -Infinity : arr[mid-1];
   let next = mid+1 > arr.length-1 ? -Infinity : arr[mid+1];
   if (curr > prev && curr > next){
      return arr[mid];
   }
   if (curr < next){
      return greaterThanAdjacent(arr, mid+1, end);
   }
   if (curr > next){
      return greaterThanAdjacent(arr, start, mid-1);
   }
   return null;
};
console.log(greaterThanAdjacent(arr));

출력

다음은 콘솔 출력입니다 -

9