leetcode 739. Daily Temperatures 每日温度(中等)
一、题目大意
标签: 栈和队列
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 每日温度(中等)相关推荐
- LeetCode #739 - Daily Temperatures
题目描述: Given a list of daily temperatures T, return a list such that, for each day in the input, tell ...
- 739. Daily Temperatures - LeetCode
Question 739. Daily Temperatures Solution 题目大意:比今天温度还要高还需要几天 思路:笨方法实现,每次遍历未来几天,比今天温度高,就坐标减 Java实现: p ...
- 739. Daily Temperatures
为什么80%的码农都做不了架构师?>>> Description Tag:Stack, Hash Table Difficulty: Medium Given a list o ...
- 【LeetCode】【HOT】739. 每日温度(栈)
[LeetCode][HOT]739. 每日温度 文章目录 [LeetCode][HOT]739. 每日温度 package hot;import java.util.ArrayDeque; impo ...
- leetcode 栈739. 每日温度
739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数.如果之后都不会升高,请输入 0 来代替.例如,给定一个列表 temperatures ...
- 184、【栈与队列】leetcode ——739. 每日温度(C++版本)
题目描述 参考文章:739. 每日温度 解题思路 (1)暴力法 每次遍历到一个数时,就再开辟一个变量找此数后面第一个大于它的数,找到则添加,没找到则返回0. class Solution {publi ...
- 2020-06-11 LeetCode 739 每日温度 C++
题目:739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 t ...
- 力扣739. 每日温度
739. 每日温度 - 力扣(LeetCode) (leetcode-cn.com) 暴力 class Solution {public int[] dailyTemperatures(int[] t ...
- 739. 每日温度 golang
739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temper ...
- 739. 每日温度 golang (list实现)
739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temper ...
最新文章
- 3-unit10 iptables
- servlet设置session追踪模式
- Google ToolBar 3.0 Beta试用
- spring spring c3p0 mysql配置_Spring通过c3p0配置bean连接数据库
- php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程
- 如何得到webbrowser的句柄
- pdnovel.php_Pdnovel 在線閱讀體驗
- HTML-超链接标签,表格,列表
- [Js-Java SE]文件/文件夹复制(递归)
- 局域网查询在线计算机ip地址,教你利用局域网快速查询电脑IP地址的详细步骤...
- 博弈论(取石子专题)
- JS-- jQuery遮罩插件 jquery.blockUI.js
- C6678多核DSP——CMD文件介绍
- ubuntu系统打开.chm文件方式
- Japanese Student Championship 2019 Qualification B - Kleene Inversion(规律 + 快速乘)
- 【逻辑思考】有时评论比内容更精彩
- 【python初级】 关于time.sleep睡眠时间
- 第十周 项目二 阴险的小刚
- php7/etc/php-fpm.d 配置
- Hive正则表达式案例
热门文章
- vue3使用keep-alive页面切换时报错:TypeError: parentComponent.ctx.deactivate is not a function
- wingide运行两个项目_Wing IDE使用教程:部分调试功能介绍
- no interpreter
- 不用Bootcamp双系统,在Mac上跑Windows是啥感觉?
- 计算机网络自顶向下 概念填空整理(完整)
- 开放源代码的设计层面框架Spring——day03
- python中keys函数怎么用_Python keys()函数
- android无法识别手机号码,Android手机号码获取问题
- 神舟Z7-KP7SC笔记本电脑-游戏实机帧数截图与鲁大师跑分
- mysql索引详细介绍简书_细说mysql索引