一 题目:
二 思路:
利用单调栈,我们设一个栈,存储还没设置更高温度的栈,然后只存储比当前栈元素值更高的idenx,那么栈中一定是单调增
三 代码:
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int len=temperatures.length;
int[] res=new int[len];
//存储还没设置更高温度位数的下标
Stack<Integer> st = new Stack<>();
for (int i = 0; i < temperatures.length; i++) {
//如果本次遍历的温度大于栈中上一个存储的温度,直到不大于
//其实这一步也说明了,栈中数据必定是温度递减的,不然该温度必然出栈了
while (!st.isEmpty()&&temperatures[i]>temperatures[st.peek()]){
int v=st.pop();
res[v]=i-v;
}
st.push(i);
}
return res;
}
}