单调栈(查找一个最大差值或查询某个位置左右两侧比他大(或小)的数的位置)

发布时间 2023-08-15 13:55:56作者: skiesclear

leetcode 121.买卖股票的最佳时机

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int ans = 0;
        vector<int> St;
        prices.emplace_back(-1); //为了结果的必然出现
        for (int i = 0; i < prices.size(); ++ i){
            while (!St.empty() && St.back() > prices[i]){//维护这个递增栈 
                ans = std::max(ans, St.back() - St.front()); 
                St.pop_back();
            }
            St.emplace_back(prices[i]);
        }

        return ans;
    }
};