LeetCode 739.每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answeri 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = 73,74,75,71,69,72,76,73

输出: 1,1,4,2,1,1,0,0

示例 2:

输入: temperatures = 30,40,50,60

输出: 1,1,1,0

示例 3:

输入: temperatures = 30,60,90

输出: 1,1,0

提示:

1 <= temperatures.length <= 10 5 ^5 5

30 <= temperaturesi <= 100

单调栈,从后往前遍历温度,每遍历到一个温度t,循环将其与栈顶温度比较,如果t大于等于栈顶温度,则出栈,这样栈顶的温度就是后面第一个大于当前的温度了:

cpp 复制代码
class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        int n = temperatures.size();
        vector<int> ans(n);

        stack<int> stk;
        for (int i = n - 1; i >= 0; --i) {
            while (!stk.empty() && temperatures[i] >= temperatures[stk.top()]) {
                stk.pop();
            }

            if (!stk.empty()) {
                ans[i] = stk.top() - i;
            }

            stk.push(i);
        }

        return ans;
    }
};

如果temperatures的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(n)。

相关推荐
v_34836087626 小时前
Android native端 堆栈打印
android·算法
residual_fan6 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea7 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询8 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun618 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun618 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
June bug10 小时前
【HCIA- AI(正课)】3.1.人工智能业务流程
职场和发展
302wanger10 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼10 小时前
CF——错题的集合
算法
SL_staff10 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈