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

给你一个数组 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;
    }
}
相关推荐
稚辉君.MCA_P8_Java1 分钟前
通义 Go 语言实现的插入排序(Insertion Sort)
数据结构·后端·算法·架构·golang
IDOlaoluo2 分钟前
jakarta-tomcat-connectors-jk2-src.tar.gz 安装教程(详细步骤及附安装包)
java·tomcat
未若君雅裁5 分钟前
sa-token前后端分离集成redis与jwt基础案例
后端
江小北6 分钟前
美团面试:MySQL为什么能够在大数据量、高并发的业务中稳定运行?
后端
SheepHappy8 分钟前
MyBatis-Plus 源码阅读(三)条件构造器原理深度剖析
java·源码阅读
zhaomy20259 分钟前
从ThreadLocal到ScopedValue:Java上下文管理的架构演进与实战指南
java·后端
用户849137175471615 分钟前
从源码看设计:Java 集合框架的安全性与性能权衡 (基于 JDK 1.8)
java·面试
华仔啊16 分钟前
10分钟搞定!SpringBoot+Vue3 整合 SSE 实现实时消息推送
java·vue.js·后端
l***775225 分钟前
总结:Spring Boot 之spring.factories
java·spring boot·spring
稚辉君.MCA_P8_Java44 分钟前
Gemini永久会员 Go 实现动态规划
数据结构·后端·算法·golang·动态规划