根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸入是你需要再等待多久溫度纔會升高的天數。如果之後都不會升高,請輸入 0 來代替。
例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]。
提示:氣溫 列表長度的範圍是 [1, 30000]。每個氣溫的值的都是 [30, 100] 範圍內的整數。
解題思路:
利用遞減棧的思想可以比較方便的實現。棧中存儲的元素爲temperature容器元素的索引號,直到遍歷完該容器中的所有元素就停止。
代碼:
/*使用遞減棧*/
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
int length = T.size();
vector<int> res(length,0);
stack<int> tmp;
for(int i = 0;i < length; i++){
while(!tmp.empty() && T[i] > T[tmp.top()]){
res[tmp.top()] = i - tmp.top();
tmp.pop();
}
tmp.push(i);
}
return res;
}
};