题目描述:
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。
解题分析:
如果需要找到左边或者右边第一个比当前位置的数大或者小,则可以考虑使用单调栈;单调栈的题目如接雨水和柱状图最大矩形等等
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
stack<int> sta;
vector<int> ans(temperatures.size());
for(int i=0; i<temperatures.size(); ++i){
while(!sta.empty() && temperatures[i]>temperatures[sta.top()]){
ans[sta.top()]=i-sta.top();
sta.pop();
}
sta.push(i);
}
return ans;
}
};