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

给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > iprices[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;
    }
}
相关推荐
NAGNIP2 小时前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
勇哥java实战分享2 小时前
程序员的明天:AI 时代下的行业观察与个人思考
后端
NAGNIP2 小时前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮2 小时前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法
掘金码甲哥3 小时前
超性感的轻量级openclaw平替,我来给你打call
后端
用户8356290780516 小时前
无需 Office:Python 批量转换 PPT 为图片
后端·python
啊哈灵机一动7 小时前
使用golang搭建一个nes 模拟器
后端
日月云棠7 小时前
各版本JDK对比:JDK 25 特性详解
java
间彧8 小时前
SpringBoot + ShardingSphere 读写分离实战指南
后端