LeetCode #1475. Final Prices With a Special Discount in a Shop

题目

1475. Final Prices With a Special Discount in a Shop


解题方法

设置一个栈stack初始化为空,遍历prices数组,当栈中有元素且栈顶元素值大于等于当前价格时,说明当前价格就是栈顶元素的最近的最小价格,此时将栈顶元素弹出,并将其减去当前价格后存入原数组,循环此操作直至栈顶元素小于当前价格price或栈空,此操作结束后将当前元素的下标压入栈,直到数组结尾。
时间复杂度:O(n)
空间复杂度:O(n)


代码

class Solution:
    def finalPrices(self, prices: List[int]) -> List[int]:
        stack = []
        for i, price in enumerate(prices):
            while stack and prices[stack[-1]] >= price:
                prices[stack.pop()] -= price
            stack.append(i)
        return prices
posted @ 2020-12-02 09:54  老鼠司令  阅读(104)  评论(0编辑  收藏  举报