剑指 Offer II 038. 每日温度:
题目链接 :剑指 Offer II 038. 每日温度
题目:请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。
思路:
1、总结:当遇到两两元素比较寻找满足条件解问题的时候,一般用栈处理
2、栈顶元素用来做参照,与数组的当前元素进行比较,按照约束满足出入栈
AC代码:
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
ArrayDeque<Integer> dq=new ArrayDeque<>();
int cnt=0;
int[] ans=new int[temperatures.length];
while(cnt<temperatures.length)
{
if(dq.isEmpty()||temperatures[dq.peek()]>=temperatures[cnt])
{
dq.push(cnt++);
}else{
Integer top=dq.pop();
ans[top]=cnt-top;
}
}
return ans;
}
}