739. Daily Temperatures

73 阅读1分钟

739. Daily Temperatures

解题思路

  1. 维护一个递减栈 [{index: 1, val: 76}] index对应相应的 数组下标,val 对应相应的值
  2. 遍历数组,如果栈不为空且栈顶元素小于当前遍历值,将其差值push进结果值即可

代码

/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function (temperatures) {
    // 维护一个单调减的栈,当单调减的栈不为空且栈顶元素较大时,将结果推入 res
    const dec = []
    const res = []
    for (let i = 0; i < temperatures.length; i++) {
        const cur = temperatures[i]
        // 当栈顶元素较小时将 res结果值进行替换
        while (dec.length && cur > dec[dec.length - 1].val) {
            const prev = dec.pop().index
            res[prev] = i - prev
        }
        dec.push({index: i, val: temperatures[i]})
        res.push(0)
    }
    return res
};