这个题目我读了半天才读懂。。。
题目是这个意思,给出一个每一天的温度列表,然后让你输出还有多少天才能达到比今天温度高
如在第一天的73度,只需要一天,即第2天温度就是74度,比它高了.所以输出为1
如在第3天的75度,就需要再过4天,到第7天的76度,温度才比75度高。所以输出为4
这道题维护一个从栈底到栈顶单调递减的栈。栈中存的是数组的下标。当栈为空的时候,或者要 入栈元素i
小于或等于栈顶元素j
时,入栈。 当要入栈元素大于栈顶元素时,将栈顶元素弹出,并将答案数组中对应的天数赋值为 i - j
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
vector<int> res( T.size() );
stack<int> stack;
for(int i = 0; i < T.size(); ++i){
while( !stack.empty() && T[i] > T[stack.top()] ){
int j = stack.top();
res[j] = i - j;
stack.pop();
}
stack.push(i);
}
return res;
}
};