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

给你一个数组 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;
    }
}
相关推荐
BingoGo16 分钟前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack19 分钟前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
摸鱼的春哥24 分钟前
Agent教程14:记忆才是Agent开发的核心
前端·javascript·后端
Victor35626 分钟前
MongoDB(20)如何更新MongoDB集合中的文档?
后端
Victor35628 分钟前
MongoDB(21)如何删除MongoDB集合中的文档?
后端
风象南9 小时前
很多人说,AI 让技术平权了,小白也能乱杀老师傅 ?
人工智能·后端
雨中飘荡的记忆10 小时前
ElasticJob分布式调度从入门到实战
java·后端
Se7en25810 小时前
推理平台全景
后端
大漠_w3cpluscom10 小时前
你学不会 CSS,不是笨,是方向错了
后端
灵感__idea12 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法