[LeetCode]739. 每日温度(单调栈)
2024-10-09 14:46:19
题目
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。
例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。
提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/daily-temperatures
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
维护一个非递增单调栈,在元素弹出时记录天数。
注意栈中存索引,取的时候也要注意存的是索引不是元素。
代码
class Solution {
public int[] dailyTemperatures(int[] T) {
if(T==null||T.length==0) {
return null;
}
Stack<Integer> stack=new Stack<>();
int[] upraiseDays=new int[T.length];
for(int i=0;i<T.length;++i) {
while(!stack.isEmpty()&&T[stack.peek()]<T[i]) {
int idx=stack.pop();
upraiseDays[idx]=i-idx;
}
stack.push(i);
}
while(!stack.isEmpty()) {
int idx=stack.pop();
upraiseDays[idx]=0;
}
return upraiseDays;
}
}
最新文章
- 调用Child Package
- 简单播放器(增加sdl事件控制)
- C++ 读取txt文本内容,并将结果保存到新文本
- js命名规范
- 基于Multisim的buck降压斩波电路仿真
- IE11兼容性设定
- 自然数e为底数的指数函数的一个小运用
- 练习2 C - 成绩转换
- Spring + Spring MVC + Hibernate
- HDU - 1847 巴什博弈
- 构建微服务开发环境1————如何安装JDK
- Python tesserocr模块使用示例
- MongoDB索引管理-索引的创建、查看、删除
- dubbo-文档
- dll 显示调用
- mysql replace into用法详细说明
- Expected BEGIN_ARRAY but was BEGIN_OBJECT
- Android 自动化测试 robotium
- Linux-Ubuntu14.04下mongodb安装部署
- [转] Java 命名规范