这道题,就是之前周赛时候,没有ac的代码,当时是暴力求解,从前往后直接计算。
这道题采用increase stack的数据结构,可以看出,这种结构,栈顶元素是最小的,之后的元素都会大于等于这个数。毕竟,从一开始,就把那些小的数据pop出去了。而且,pop出去的数字,组合起来就是一个递增序列。厉害了。。。
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> result(temperatures.size(), 0);
stack<int> myStack;
for(int i=0;i<temperatures.size();i++)
{
while(!myStack.empty()&&temperatures[myStack.top()]<temperatures[i])
{
result[myStack.top()] = i-myStack.top();
myStack.pop();
}
myStack.push(i);
}
return result;
}
};