package leetcode;
import java.util.Stack;
public class demo_739 {
public int[] dailyTemperatures(int[] temperatures) {
int[] answer=new int[temperatures.length];
//单调栈,从栈底到栈顶递减,存放的是元素在数组中的位置
Stack<Integer> stack=new Stack<Integer>();
for(int i=0;i<temperatures.length;i++) {
//如果栈顶对应的值小于当前的值,说明当前值即为在栈顶元素之后第一个比它的值
while(!stack.isEmpty()&&temperatures[stack.peek()]<temperatures[i]) {
//在answer中存储值
answer[stack.peek()]=i-stack.peek();
stack.pop();
}
stack.add(i);
}
for (int integer : answer) {
System.out.println(integer);
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_739 demo=new demo_739();
int[] temperatures= {73,74,75,71,69,72,76,73};
demo.dailyTemperatures(temperatures);
}
}