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;

    }
};

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