문제
첫 번째이자 유일한 인수로 숫자 배열, 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]