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

给你一个数组 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;
    }
}
相关推荐
小许好楠5 分钟前
java开发工程师-学习方式
java·开发语言·学习
Halo_tjn22 分钟前
基于 IO 流实现文件操作的专项实验
java·开发语言
姓蔡小朋友27 分钟前
MySQL事务、InnoDB存储引擎
java·数据库·mysql
业精于勤的牙31 分钟前
最长特殊序列(二)
java·开发语言·算法
回家路上绕了弯38 分钟前
深度解析分布式事务3PC:解决2PC痛点的进阶方案
分布式·后端
yong999041 分钟前
C#实现OPC客户端与S7-1200 PLC的通信
开发语言·网络·算法·c#
林shir44 分钟前
Java基础1.3-Java基础语法
java
狗头大军之江苏分军44 分钟前
快手12·22事故原因的合理猜测
前端·后端
yaoh.wang1 小时前
力扣(LeetCode) 111: 二叉树的最小深度 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·深度优先
仲夏月二十八1 小时前
关于golang中何时使用值对象和指针对象的描述
开发语言·后端·golang