739. Daily Temperatures
解题思路
- 维护一个递减栈 [{index: 1, val: 76}] index对应相应的 数组下标,val 对应相应的值
- 遍历数组,如果栈不为空且栈顶元素小于当前遍历值,将其差值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
};