当前位置: 首页 > news >正文

LeetCode 739. 每日温度

 题目描述  

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 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.暴力

解题思路

       这道题如果用暴力解,就是循环两次,外循环遍历所有温度,外循环遍历后面的温度,依次找到每一天温度的结果。这种做法如果遇到温度都是递增的情况,最坏时间复杂度为O(N^2)。这种方法案例是跑不通的。

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {vector<int> ans;int n = temperatures.size();for(int i = 0;i < n;i ++){int j = i;while(j < n && temperatures[j] <= temperatures[i]) j ++;if(j == n) j = i;ans.push_back(j - i);}return ans;}
};

        时间复杂度O(N^2),空间复杂度O(1)

2.栈

解题思路:

        我们尝试空间换时间方式来进行优化,利用栈保存"未找到更高温度"的索引,遇到高温时一次性解决多个等待问题,这样就了避免重复比较,每个元素最多入栈一次、出栈一次,虽然内层有while循环,但总操作次数是2n次。详细步骤请看代码注释。

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n = temperatures.size(); vector<int> ans(n, 0); // 初始化结果数组,默认值为0(表示没有更高温度)stack<pair<int, int>> s; // 单调栈:存储(温度值, 索引)对// 将第一个元素压入栈中s.push({temperatures[0], 0});// 从第二个元素开始遍历for(int i = 1; i < n; i++) {// 当前温度比栈顶温度高时,弹出栈顶并计算等待天数while(!s.empty() && temperatures[i] > s.top().first) {// 栈顶元素找到了更高的温度,计算等待天数ans[s.top().second] = i - s.top().second;s.pop(); // 弹出已处理的元素}// 将当前温度压入栈中,等待后续更高的温度s.push({temperatures[i], i});}// 栈中剩余的元素自动保持ans[i] = 0(没有更高温度)return ans;}
};

        时间复杂度O(N),空间复杂度O(N)

http://www.dtcms.com/a/593439.html

相关文章:

  • seo网站优化专家绿色资源网
  • 数据库迁移实操与金仓数据库技术优势:从语法兼容到自动化落地
  • 监听错误的方式有哪些?
  • 一阶时域信号的分类
  • 网站搭建推广优化企业网站建公司
  • Supabase 全景解析:开源后端的全栈开发革命
  • 2025年主流跨平台框架全面对比:选型指南与趋势展望
  • 徐州手机网站开发公司上海知名的seo推广咨询
  • 51自学网官方网站深州市住房保障和城乡建设局网站
  • 在超算上启动h5bench
  • 财报OCR录入识别软件准确率高吗?易道博识财报录入实测效果如何?
  • WPF MatrixTransform 矩阵参数的疑问?
  • 公网IP与私有IP的区别
  • 怎么做兼职类网站吗WordPress头像不能本地化
  • 丰城市建设局网站广安网站建设推荐
  • 【Jenkins/Termius/集群概念】
  • pyenv-win更新最新的python安装库使其可以安装最新python版本
  • 忘记密码页测试用例
  • 长沙 网站设计 公司旬阳做网站
  • ✨实验6:从2D混合几何到3D模型渲染
  • 医药研发项目管理系统(PMS)有哪些?如何提升新药研发过程中的效率?
  • 全球物联网蜂窝模组市场格局与海外销售趋势分析
  • 网络命令ping、netstat、pidof
  • 与做网站有关的参考文献帝国cms7.0模板 绿色企业网站模板(整站带数据)
  • RK3588作为主控,STM32F103作为下位机,思岚S2雷达,四路电机驱动板,进行地图构建计划
  • VSR字幕检测模块PaddleOCR模型升级:从PP-OCRv4到PP-OCRv5​(当前最新的PaddleOCR模型)
  • AbMole小课堂丨Tirzepatide:GIP/GLP-1双重受体激动剂在糖尿病、肥胖症、心脏保护等动物模型中的研究应用
  • Flutlab使用指南及功能介绍
  • Datawhale coze-ai-assistant task1
  • 平潭建设局网站首页渭南网站建设网站建设