单调栈 模板

class Solution {
    
    
public:
//从后往前的方法 
    vector<int> dailyTemperatures(vector<int>& temperatures) {
    
    
        int n = temperatures.size();
        vector<int> ans(n);//创建一个大小为n的数组
        stack<int> st;//这个时候栈中没有任何元素
        for(int i = n-1;i >= 0; i--){
    
    
            int t = temperatures[i];
            while(!st.empty() && t >= temperatures[st.top()]){
    
    
                //第一次循环的时候栈是空的 直接跳过循环
                st.pop();
            }
            if(!st.empty()){
    
    
                ans[i] = st.top() - i;
            }
            st.push(i);//我们push进去的是数组的下标 而不是数组的值
        }
        return ans;
    }
};

//我们随机一组数字
// [73,74,75,71,69,72,76,73]
// 73

//我们随机一组数字

练习:
每日温度

class Solution {
    
    
public:
//从后往前的方法 
    vector<int> dailyTemperatures(vector<int>& temperatures) {
    
    
        int n = temperatures.size();
        vector<int> ans(n);//创建一个大小为n的数组
        stack<int> st;//这个时候栈中没有任何元素
        for(int i = n-1;i >= 0; i--){
    
    
            int t = temperatures[i];
            while(!st.empty() && t >= temperatures[st.top()]){
    
    
                //第一次循环的时候栈是空的 直接跳过循环
                st.pop();
            }
            if(!st.empty()){
    
    
                ans[i]
            }
            st.push(i);//我们push进去的是数组的下标 而不是数组的值
        }
        return ans;
    }
};

//我们随机一组数字

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_62260432/article/details/134623344