這個題目我讀了半天才讀懂。。。
題目是這個意思,給出一個每一天的溫度列表,然後讓你輸出還有多少天才能達到比今天溫度高
如在第一天的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;
}
};