為 JavaScript 中的下一個更大元素查詢距離
問題
我們需要編寫一個 JavaScript 函式,其中接收一個數字陣列 arr 作為第一個也是唯一的引數。
我們的函式應該為輸入構造一個新陣列,其中每個相應元素都是到下一個大於當前元素的元素的距離,如果沒有大於當前元素的元素在它的右邊,我們應該在 res 陣列中為該相應元素新增 0,最後應該返回該陣列。
例如,如果輸入函式的是
輸入
const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
輸出
const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];
輸出解釋
因為 13 是大於 12 的下一個元素,距離為 1 塊,
大於 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]
廣告