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