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

给你一个数组 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;
    }
}
相关推荐
aq55356004 分钟前
编程语言三巨头:汇编、C++与PHP大比拼
java·开发语言
我是无敌小恐龙24 分钟前
Java SE 零基础入门Day01 超详细笔记(开发前言+环境搭建+基础语法)
java·开发语言·人工智能·opencv·spring·机器学习
FreeCultureBoy30 分钟前
用 phpbrew 管理 php 环境:从安装到多版本切换
后端·php
FreeCultureBoy1 小时前
用 jenv 管理 Java 环境:从安装 JDK 到多版本切换
后端
心态与习惯1 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
IT_陈寒1 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
考虑考虑1 小时前
SQL语句中的order by可能造成时间重复
数据库·后端·mysql
py有趣1 小时前
力扣热门100题之不同路径
算法·leetcode
一叶飘零_sweeeet1 小时前
优秀文章合集
java
_日拱一卒2 小时前
LeetCode:25K个一组翻转链表
算法·leetcode·链表