739 每日温度

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


� 解题思路

设置一个单调栈,并从左往右遍历。

如果栈顶元素大于等于当前的元素,那么压入栈;

否则,说明当前元素为一个更大的数字,将栈中小于该数的元素全部弹出并写入索引之差,然后把当前元素压入栈。

重复以上步骤。


� 代码实现

cpp 复制代码
class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        vector<int> res(temperatures.size(),0);
        stack<int> stk;
        for(int i=0;i<temperatures.size();i++){
            while(!stk.empty() &&temperatures[stk.top()]<temperatures[i]){
                res[stk.top()]=i-stk.top();
                stk.pop();
            }
            stk.push(i);
        }
        return res;
    }
};

📊 复杂度分析

每个元素最多入栈+出栈一次,时间复杂度为2n,使用额外的n空间存储结果和单调栈。

  • 时间复杂度: O(n)
  • 空间复杂度: O(n)

日期: 2026-4-29

相关推荐
BothSavage7 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn7 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽8 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰1 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术1 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六1 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术1 天前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize1 天前
初识DFS 与 BFS:递归、队列与图遍历
算法