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

相关推荐
地平线开发者3 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
学习星球6 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
alphaTao12 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11212 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余21 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘1 天前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天1 天前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源1 天前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang