LeetCode 1475 商品折扣后的最终价格[栈] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1475 商品折扣后的最终价格[栈] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
刚看到这道题的时候不知道如何下手,如果用暴力的方法时间复杂度太高,并且会进行很多重复操作,但是利用栈的形式可以很好化解这样的问题,可以设计这样一个栈,栈顶遇到小的就弹出,不断弹出直到没有比要进入的数还大的数,这能保证栈中的元素右边的元素都是比自身大的数,这样一次遍历就可以把所有的商品价格都更新,代码如下:

class Solution 
public:
    vector<int> finalPrices(vector<int>& prices) 
        int n = prices.size();
        stack<int> s;
        for(int i = 0; i < n; i ++) 
            if(s.empty()) 
                s.push(i);
             else 
                while(!s.empty() && prices[s.top()] >= prices[i]) 
                    prices[s.top()] -= prices[i];
                    s.pop();
                
                s.push(i);
            
        
        return prices;
    
;

以上是关于LeetCode 1475 商品折扣后的最终价格[栈] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1475 商品折扣后的最终价格[栈] HERODING的LeetCode之路

每日一题1475. 商品折扣后的最终价格

leetcode刷题73.商品折扣后的最终价格——Java版

LeetCode9月 每日一题

LeetCode9月 每日一题

LeetCode9月 每日一题