class Solution {
public:
//单调栈一般用于查找左右两边第一个比该数大或者小的位置,也即延展问题。
//维护一个从上到下递减的单调栈,栈内存储温度数组的下标
//在遍历温度数组的过程中,与栈顶元素对比,如果比栈顶元素大则表明找到了栈顶元素的最近更高温度
//此时用当前下标减去栈顶元素下标就是答案
vector<int> ans;
vector<int> dailyTemperatures(vector<int>& temperatures) {
int sz = temperatures.size();
ans.resize(sz);
stack<int> sta;
for(int i = 0; i < sz; i++){
while(!sta.empty() && temperatures[i] > temperatures[sta.top()]){
ans[sta.top()] = i - sta.top();
sta.pop();
}
sta.push(i);
}
return ans;
}
};
leetcode 739.每日温度 (单调栈)
于 2023-03-19 14:45:28 首次发布