商品折扣后的最终价格单调栈

给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。 请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。

ini 复制代码
输入: prices = [8,4,6,2,3]
输出: [4,2,4,2,3]
java 复制代码
class Solution {
    public int[] finalPrices(int[] prices) {
        int n=prices.length;
        int[] ans=new int[n];
        Deque<Integer> stack=new ArrayDeque<Integer>();
        for(int i=n-1;i>=0;i--){
            while(!stack.isEmpty() && stack.peek()>prices[i]){
                stack.pop();
            }
            ans[i]=stack.isEmpty()?prices[i]:prices[i]-stack.peek();
            stack.push(prices[i]);
        }
        return ans;
    }
}
相关推荐
谁在黄金彼岸几秒前
WinSW在Win7上失败真相-实测与修复
后端
waoooqwe3 分钟前
问卷样本真实吗
大数据·数据库·算法·数据分析
Wang's Blog6 分钟前
Java框架 SpringCloud 快速入门: 过滤器链执行顺序
java·spring cloud
苦瓜打怪兽8 分钟前
leetcode 热题100(11. 盛最多水的容器)
python·算法·leetcode
花间相见9 分钟前
【后端开发|Redis进阶01】—— Redis分布式锁全解:从SETNX到Redisson看门狗,再到RedLock
后端·面试
llqbzllll13 分钟前
A2A 1.0 到底和 MCP 差在哪:从 Agent Card、Task 到 Java 最小互操作
后端
花间相见13 分钟前
【后端开发|JVM基础01】—— Java垃圾回收全解:从分代内存模型到各收集器的分代职责
后端
geovindu18 分钟前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式
pe7er20 分钟前
Spring Boot 日志最佳实践:接入、分级、异常记录与滚动拆分
后端
砚底藏山河20 分钟前
量化实战:回测数据底座快照与版本管理进阶
java·大数据·python·金融·maven