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

JavaScript에서 튜플의 인덱스 차이

<시간/>

문제

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

다음 조건을 충족하는 배열의 두 인덱스 i와 j를 가정합니다. -

  • 나는

  • arr[i] <=arr[j]

이러한 모든 인덱스 튜플(i, j) 중에서 우리 함수는 차이 j - i를 반환해야 합니다. 여기서 최대값입니다.

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

인 경우
const arr = [6, 0, 8, 2, 1, 5];

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

const output = 4;

출력 설명

최대 차이는 (i, j) =(1, 5)에서 달성됩니다:arr[1] =0 및 arr[5] =5.

예시

이에 대한 코드는 -

const arr = [6, 0, 8, 2, 1, 5];
const maximumDifference = (arr = []) => {
   let max = 0
   const stack = [0]
   for (let i = 1; i < arr.length; i++) {
      if (arr[i] < arr[stack[stack.length - 1]]) {
         stack.push(i)
      }
   }
   for (let i = arr.length - 1; i >= 0; i--) {
      while (arr[i] >= arr[stack[stack.length - 1]]) {
         max = Math.max(max, i - stack.pop())
      }
   }
   return max;
};
console.log(maximumDifference(arr));

출력

콘솔의 출력은 -

4