LeetCode 739. 每日溫度(最詳細的解法!!!)

根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸入是你需要再等待多久溫度纔會升高的天數。如果之後都不會升高,請輸入 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章