Skip to content

📚 1.每日温度

💻 代码实现

typescript
// @ts-nocheck
/**
 * @url https://leetcode.cn/problems/daily-temperatures/description/
 */

// ==========  //

// 暴力解法 时间复杂度 O(n^2)
/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function (temperatures) {
    let curDayIdx = 0
    const res = new Array(temperatures.length).fill(0)
    while (curDayIdx < temperatures.length) {
        let explorePointer = curDayIdx
        while (explorePointer < temperatures.length && temperatures[explorePointer] <= temperatures[curDayIdx]) {
            explorePointer++
        }
        if (explorePointer === temperatures.length) {
            res[curDayIdx] = 0
        }else {
            res[curDayIdx] = explorePointer - curDayIdx
        }
        curDayIdx++
    }
    return res
};

// 单调栈 时间复杂度 O(n)
/**
 * @param {number[]} temperatures
 * @return {number[]}
 */

var dailyTemperatures = function(temperatures) {
    const stack = []
    const res = new Array(temperatures.length).fill(0)
    for (let i = 0; i < temperatures.length; i++) {
        const temperature = temperatures[i]
        if (!stack.length) {
            stack.push(i)
        }else {
            while (stack.length && temperature > temperatures[stack[stack.length - 1]]) {
                res[stack[stack.length - 1]] = i - stack[stack.length - 1]
                stack.pop()
            }
            stack.push(i)
        }
    }
    return res
};

Released under the MIT License.