為 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]

更新日期:2021-4-24

191 次瀏覽

開啟你的職業生涯

完成課程並獲得認證

開始學習
廣告