返回一个数组,ans[i]表示相对于第i天的温度而言,下一个更高的温度出现在几天后
如果没有就是0
一开始接单粗暴地两层for循环遍历,不出意外地超时了
后来又想到可以排序后比对位置,但是数组中可能出现重复的元素,于是又被否决了
官方题解给出的是用“单调栈”
虽然不理解是怎么想到的以及为什么这样是正确的,但是先会用
vector<int> dailyTemperatures(vector<int>& temperatures) {
int n = temperatures.size();
vector<int> ans(n);
stack<int> stk;
for (int i = 0; i < n; i++) {
while (!stk.empty() && temperatures[i] > temperatures[stk.top()]) {
int preIndex = stk.top();
ans[preIndex] = i - preIndex;
stk.pop();
}
stk.push(i);
}
return ans;
}
为什么push一定要放在后面呢?
标签:int,每日,stk,力扣,vector,temperatures,ans,739,preIndex From: https://www.cnblogs.com/yaocy/p/16982765.html