一、题目大意

标签: 栈和队列

https://leetcode.cn/problems/daily-temperatures

给定一个整数数组 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 <= temperatures.length <= 105

  • 30 <= temperatures[i] <= 100

    二、解题思路

    什么是单调栈?单调栈通过维持栈内值的单调递增(递减)性,在整体O(n)的时间内处理需要大小比较的问题。

思路:可以维持一个单调递减的栈,表示每天的温度,为了方便计算天数差,这里存放位置(即日期)而非温度本身。从左向右遍历温度数组,对于每个日期p,如果p的温度比栈顶存储位置q的温度高,则我们取出q,并记录q需要等待的天数p-q;重复这一过程,直到p的温度小于等于栈顶位置的温度或空栈时,我们将p插入栈顶,然后考虑下一天。在这个过程中栈内数组永远保持单调递减,避免了使用排序进行比较。最后若栈内剩余一些日期,则说明它们之后都没有出现更暖和的日期。

三、解题方法

3.1 Java实现

public class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] ans = new int[temperatures.length];Stack<Integer> desStack = new Stack<>();for (int i = 0; i < temperatures.length; i++) {while (!desStack.isEmpty()) {int preIndex = desStack.peek();if (temperatures[i] <= temperatures[preIndex]) {break;}desStack.pop();ans[preIndex] = i - preIndex;}desStack.push(i);}return ans;}
}

四、总结小记

  • 2022/8/10 下雨、下雪本是很好玩的事,大了之后也不尽然,出行、生产、工作都会受到影响

leetcode 739. Daily Temperatures 每日温度(中等)相关推荐

  1. LeetCode #739 - Daily Temperatures

    题目描述: Given a list of daily temperatures T, return a list such that, for each day in the input, tell ...

  2. 739. Daily Temperatures - LeetCode

    Question 739. Daily Temperatures Solution 题目大意:比今天温度还要高还需要几天 思路:笨方法实现,每次遍历未来几天,比今天温度高,就坐标减 Java实现: p ...

  3. 739. Daily Temperatures

    为什么80%的码农都做不了架构师?>>>    Description Tag:Stack, Hash Table Difficulty: Medium Given a list o ...

  4. 【LeetCode】【HOT】739. 每日温度(栈)

    [LeetCode][HOT]739. 每日温度 文章目录 [LeetCode][HOT]739. 每日温度 package hot;import java.util.ArrayDeque; impo ...

  5. leetcode 栈739. 每日温度

    739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数.如果之后都不会升高,请输入 0 来代替.例如,给定一个列表 temperatures ...

  6. 184、【栈与队列】leetcode ——739. 每日温度(C++版本)

    题目描述 参考文章:739. 每日温度 解题思路 (1)暴力法 每次遍历到一个数时,就再开辟一个变量找此数后面第一个大于它的数,找到则添加,没找到则返回0. class Solution {publi ...

  7. 2020-06-11 LeetCode 739 每日温度 C++

    题目:739. 每日温度  根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替.  例如,给定一个列表 t ...

  8. 力扣739. 每日温度

    739. 每日温度 - 力扣(LeetCode) (leetcode-cn.com) 暴力 class Solution {public int[] dailyTemperatures(int[] t ...

  9. 739. 每日温度 golang

    739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temper ...

  10. 739. 每日温度 golang (list实现)

    739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temper ...

最新文章

  1. 3-unit10 iptables
  2. servlet设置session追踪模式
  3. Google ToolBar 3.0 Beta试用
  4. spring spring c3p0 mysql配置_Spring通过c3p0配置bean连接数据库
  5. php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程
  6. 如何得到webbrowser的句柄
  7. pdnovel.php_Pdnovel 在線閱讀體驗
  8. HTML-超链接标签,表格,列表
  9. [Js-Java SE]文件/文件夹复制(递归)
  10. 局域网查询在线计算机ip地址,教你利用局域网快速查询电脑IP地址的详细步骤...
  11. 博弈论(取石子专题)
  12. JS-- jQuery遮罩插件 jquery.blockUI.js
  13. C6678多核DSP——CMD文件介绍
  14. ubuntu系统打开.chm文件方式
  15. Japanese Student Championship 2019 Qualification B - Kleene Inversion(规律 + 快速乘)
  16. 【逻辑思考】有时评论比内容更精彩
  17. 【python初级】 关于time.sleep睡眠时间
  18. 第十周 项目二 阴险的小刚
  19. php7/etc/php-fpm.d 配置
  20. Hive正则表达式案例

热门文章

  1. vue3使用keep-alive页面切换时报错:TypeError: parentComponent.ctx.deactivate is not a function
  2. wingide运行两个项目_Wing IDE使用教程:部分调试功能介绍
  3. no interpreter
  4. 不用Bootcamp双系统,在Mac上跑Windows是啥感觉?
  5. 计算机网络自顶向下 概念填空整理(完整)
  6. 开放源代码的设计层面框架Spring——day03
  7. python中keys函数怎么用_Python keys()函数
  8. android无法识别手机号码,Android手机号码获取问题
  9. 神舟Z7-KP7SC笔记本电脑-游戏实机帧数截图与鲁大师跑分
  10. mysql索引详细介绍简书_细说mysql索引