1. 题目描述

2. 题目解析
- 大致的意思是:在今天的以后几天内,有哪一天是比今天的气温升高的,如果有的话,求出其中的天数差,如果没有的话,用0代替。
- 一开始用的暴力,然后超时。
- 这个题目用到了单调栈的原理。

3. 题目代码
public static int[] dailyTemperatures(int[] T) {
int[] list = new int[T.length];
int num = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < list.length; i++) {
// 字符串长度为 0,返回 true,否则返回 false。
// Object push(Object element):将元素推送到堆栈顶部。
// Object pop():移除并返回堆栈的顶部元素。如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常。
// Object peek():返回堆栈顶部的元素,但不删除它。
// boolean empty():如果堆栈顶部没有任何内容,则返回true。否则,返回false。
// int search(Object element):确定对象是否存在于堆栈中。如果找到该元素,它将从堆栈顶部返回元素的位置。否则,它返回-1。
while (!stack.isEmpty() && T[i] > T[stack.peek()]) {
list[stack.peek()] = i - stack.peek();
stack.pop();
}
stack.add(i);
}
return list;
}
还没有评论,来说两句吧...