1. 今日语录
单调栈,专题训练
2. 题目
下一个元素
3. 思路
/**
* @param {number[]} temperatures
* @return {number[]}
*/
var nextGreaterElement = function (nums1, nums2) {
const map = new Map()
const stack = []
for (let i = nums2.length - 1; i >= 0; i--) {
// 其实就是确定每个数后面第一个比它大的数
while(stack.length && nums2[i] >= stack[stack.length - 1] ){
stack.pop()
}
// 此时栈顶就是 右侧 第一个 比自己大的数了,也有可能栈为空,为-1
map.set(nums2[i],stack.length ? stack[stack.length - 1]: -1)
stack.push(nums2[i])
}
return nums1.map(item => map.get(item))
};
4. 关键字
单调栈