每日一题 - day 18

72 阅读1分钟

1. 今日语录

单调栈,专题训练

2. 题目

下一个元素

leetcode.cn/problems/ne…

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. 关键字

单调栈