【LeetCode739】每日温度(单调栈)

1.题目

【LeetCode739】每日温度(单调栈)

2.思路

单调栈,用一个栈装数组下标。
遍历一次数组,对应数组元素若大于栈顶元素(如果有元素),则找到答案——当前下标和【栈顶元素所在数组的下标】的差,最后弹栈。

单调栈模板

stack<int> mono_stk;
for (遍历数组)) {
    while (栈非空 && 栈顶元素大于当前元素) {
        更新结果;
        栈顶元素出栈;
    }
    入栈;
}

3.代码

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& t) {
        stack<int>zhan;
        vector<int>ans(t.size(),0);
        for(int i=0;i<t.size();i++){//只用遍历一遍数组
            while(zhan.empty()!=true && t[i]>t[zhan.top()]){
                ans[zhan.top()]=i-zhan.top();
                zhan.pop();
            }
            zhan.push(i);
        }
        return ans;
    }
};
上一篇:数据结构第三章相关栈


下一篇:关于laravel5 消息订阅/发布的理解初