leetcode六月每日一題 leetcode739(單調棧)

在這裏插入圖片描述
這個題目我讀了半天才讀懂。。。

題目是這個意思,給出一個每一天的溫度列表,然後讓你輸出還有多少天才能達到比今天溫度高

如在第一天的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;

    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章