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

JavaScript에서 다음으로 큰 요소까지의 거리 찾기

<시간/>

문제

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

우리의 함수는 각각의 대응하는 요소가 현재 요소보다 다음으로 큰 요소까지의 거리인 입력에 대한 새로운 배열을 구성해야 하며, 현재 요소의 오른쪽에 더 큰 요소가 없으면 해당 요소에 대해 0을 밀어야 합니다. 요소를 res 배열에 넣고 마지막으로 이 배열을 반환해야 합니다.

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

인 경우

입력

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];

출력

const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];

출력 설명

12에서 다음으로 큰 요소는 1블록 떨어진 13이기 때문에

13보다 다음으로 큰 것은 14이며 1블록 떨어져 있습니다.

14보다 큰 다음은 16이며 2블록 떨어져 있습니다.

다음은 코드입니다 -

예시

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
const findNextGreater = (arr = []) => {
   const stack = []
   const res = new Array(arr.length).fill(0)
   for (let i = 0; i < arr.length; i++) {
      while (arr[i] > arr[stack[stack.length - 1]] && stack.length > 0) {
         const index = stack.pop()
         res[index] = i - index
      }
      stack.push(i)
   };
   return res
};
console.log(findNextGreater(arr));

출력

[1, 1, 2, 1, 3, 1, 1, 1, 0, 0]