当前位置:网站首页>【Hot100】739. 每日温度
【Hot100】739. 每日温度
2022-07-06 06:42:00 【王六六的IT日常】
739. 每日温度
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
题目理解:
对于输入 73,它需要 经过一天 才能等到温度的升高,也就是在第二天的时候,温度升高到 74 ,所以对应的结果是 1。
对于输入 74,它需要 经过一天 才能等到温度的升高,也就是在第三天的时候,温度升高到 75 ,所以对应的结果是 1。
对于输入 75,它经过 1 天后发现温度是 71,没有超过它,继续等,一直 等了四天,在第七天才等到温度的升高,温度升高到 76 ,所以对应的结果是 4 。
对于输入 71,它经过 1 天后发现温度是 69,没有超过它,继续等,一直 等了两天,在第六天才等到温度的升高,温度升高到 72 ,所以对应的结果是 2 。
对于输入 69,它 经过一天 后发现温度是 72,已经超过它,所以对应的结果是 1 。
对于输入 72,它 经过一天 后发现温度是 76,已经超过它,所以对应的结果是 1 。
对于输入 76,后续 没有温度 可以超过它,所以对应的结果是 0 。
对于输入 73,后续 没有温度 可以超过它,所以对应的结果是 0 。
想法:针对每个温度值 向后进行依次搜索 ,找到比当前温度更高的值,这是最容易想到的办法。
原理:是从左到右除了最后一个数其他所有的数都遍历一次,最后一个数据对应的结果肯定是 0,就不需要计算。
遍历的时候,每个数都去向后数,直到找到比它大的数,数的次数就是对应输出的值。
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int len = temperatures.length;
int[] res = new int[len];
for(int i=0;i<len;i++){
int cur = temperatures[i];
if(cur < 100){
for(int j=i+1;j<len;j++){
if(temperatures[j] > cur){
res[i] = j-i;
break;
}
}
}
}
return res;
}
}
用栈来解决:
递减栈 :栈里只有递减元素。
遍历整个数组,如果栈不空,且当前数字大于栈顶元素,那么如果直接入栈的话就不是 递减栈 ,所以需要取出栈顶元素,由于当前数字大于栈顶元素的数字,而且一定是第一个大于栈顶元素的数,直接求出下标差就是二者的距离。
继续看新的栈顶元素,直到当前数字小于等于栈顶元素停止,然后将数字入栈,这样就可以一直保持递减栈,且每个数字和第一个大于它的数的距离也可以算出来。
class Solution {
public int[] dailyTemperatures(int[] T) {
Stack<Integer> stack = new Stack<>();
int length = T.length;
int[] result = new int[length];
for (int i = 0; i < length; i++) {
while (!stack.isEmpty() && T[i] > T[stack.peek()]) {
int pre = stack.pop();
result[pre] = i - pre;
}
stack.add(i);
}
return result;
}
}
边栏推荐
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- 女生学软件测试难不难 入门门槛低,学起来还是比较简单的
- Cobalt strike feature modification
- Day 245/300 JS forEach 多层嵌套后数据无法更新到对象中
- Day 248/300 thoughts on how graduates find jobs
- 端午节快乐Wish Dragon Boat Festival is happy
- LeetCode - 152 乘积最大子数组
- What are the characteristics of trademark translation and how to translate it?
- 字幕翻译中翻英一分钟多少钱?
- SAP SD发货流程中托盘的管理
猜你喜欢
CS-证书指纹修改
C语言_双创建、前插,尾插,遍历,删除
CS certificate fingerprint modification
Cobalt Strike特征修改
Facebook AI & Oxford proposed a video transformer with "track attention" to perform SOTA in video action recognition tasks
My seven years with NLP
Chapter 7 - thread pool of shared model
字幕翻译中翻英一分钟多少钱?
Leetcode daily question (971. flip binary tree to match preorder traversal)
万丈高楼平地起,每个API皆根基
随机推荐
基于购买行为数据对超市顾客进行市场细分(RFM模型)
成功解决AttributeError: Can only use .cat accessor with a ‘category‘ dtype
UNIPRO Gantt chart "first experience": multi scene exploration behind attention to details
My creation anniversary
SQL Server manager studio(SSMS)安装教程
Fedora/REHL 安装 semanage
ECS accessKey key disclosure and utilization
[unity] how to export FBX in untiy
雲上有AI,讓地球科學研究更省力
Traffic encryption of red blue confrontation (OpenSSL encrypted transmission, MSF traffic encryption, CS modifying profile for traffic encryption)
[ 英语 ] 语法重塑 之 动词分类 —— 英语兔学习笔记(2)
Brief introduction to the curriculum differences of colleges and universities at different levels of machine human major -ros1/ros2-
Attributeerror successfully resolved: can only use cat accessor with a ‘category‘ dtype
翻译生物医学说明书,英译中怎样效果佳
Leetcode daily question (1870. minimum speed to arrive on time)
【软件测试进阶第1步】自动化测试基础知识
Reflex WMS medium level series 3: display shipped replaceable groups
Phishing & filename inversion & Office remote template
ML之shap:基于adult人口普查收入二分类预测数据集(预测年收入是否超过50k)利用Shap值对XGBoost模型实现可解释性案例之详细攻略
翻译影视剧字幕,这些特点务必要了解