1475. 商品折扣后的最终价格 - 力扣(LeetCode)
这个问题要求我们根据给定的条件,在商店中购买商品时计算折扣后的最终价格。具体地,假设我们有一个商品价格数组 prices
,并且每个商品都有一个折扣价格,这个折扣来源于后面某个价格不大于当前商品价格的商品。
我们可以用单调栈来高效地解决这个问题。具体思路如下:
思路:
-
使用单调栈来记录可能成为折扣商品的下标,栈中的元素始终保持递减的顺序,这样每次遇到一个价格时,我们可以快速找到下一个价格小于等于当前价格的商品。
-
具体步骤:
-
遍历价格数组
prices
,对于每一个商品prices[i]
,通过栈来寻找一个符合条件的j
(即prices[j] <= prices[i]
且j > i
)。 -
如果找到了这样的商品,则折扣后的价格为
prices[i] - prices[j]
,否则不打折。
-