题目

根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 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;
}
}

最新文章

  1. 调用Child Package
  2. 简单播放器(增加sdl事件控制)
  3. C++ 读取txt文本内容,并将结果保存到新文本
  4. js命名规范
  5. 基于Multisim的buck降压斩波电路仿真
  6. IE11兼容性设定
  7. 自然数e为底数的指数函数的一个小运用
  8. 练习2 C - 成绩转换
  9. Spring + Spring MVC + Hibernate
  10. HDU - 1847 巴什博弈
  11. 构建微服务开发环境1————如何安装JDK
  12. Python tesserocr模块使用示例
  13. MongoDB索引管理-索引的创建、查看、删除
  14. dubbo-文档
  15. dll 显示调用
  16. mysql replace into用法详细说明
  17. Expected BEGIN_ARRAY but was BEGIN_OBJECT
  18. Android 自动化测试 robotium
  19. Linux-Ubuntu14.04下mongodb安装部署
  20. [转] Java 命名规范

热门文章

  1. pygame绘制背景
  2. Educational Codeforces Round 93 (Rated for Div. 2)题解
  3. 技术分享丨数据仓库的建模与ETL实践技巧
  4. Flink的应用场景和架构
  5. 《p5.js创意游戏编程》第一课:跳动的小球
  6. python 复制与粘贴处理笔记
  7. Java数据结构——2-3树
  8. 卡方检验(Chi_square_test): 原理及python实现
  9. 扫描仪文字识别ORC软件加强版(文通慧视完整版)下载
  10. 正则表达式断言精讲 Java语法实现