leetcode第1475题商品折扣后的最终价格

本文介绍了解决LeetCode第1475题的一种暴力解法,通过遍历商品列表,查找每个商品之后的第一个更低价商品进行折扣计算,详细阐述了算法逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:暴力法
依次遍历每个元素,找到第一个下标大于当前元素且值小于当前元素的元素,然后两元素值相减即可

class Solution {
   
   
public:
    vector<int> finalPrices(vector<int>& prices) {
   
   
        int size=prices.size
### 头歌平台第二关商品折扣的解思路 在解决头歌平台第二关的商品折扣时,可以借鉴 LeetCode 上类似的目——1475. 商品折扣后的最终价格。此问的核心在于遍历数组并找到符合条件的最大折扣值。 #### 思路分析 对于给定的价格列表 `prices`,需要计算每件商品的实际支付价格。具体来说,对于每个索引 `i` 对应的商品,如果在其后面存在某个索引 `j` 满足 `prices[j] <= prices[i]`,则该商品可以获得折扣 `prices[j]`;如果没有这样的 `j` 存在,则不享受任何折扣[^2]。 实现这一逻辑的关键点如下: - 使用两层嵌套循环来逐一比较当前商品与其他后续商品价格关系。 - 当发现第一个满足条件的折扣时立即停止内层循环,因为每个商品最多只能获得一次折扣[^3]。 #### Python 实现代码 以下是基于上述算法的一种可能实现: ```python def finalPrices(prices): n = len(prices) result = [] for i in range(n): # 遍历每一个商品 discount = 0 for j in range(i + 1, n): # 查找后面的更低或相等价格 if prices[j] <= prices[i]: discount = prices[j] break result.append(prices[i] - discount) # 记录实际支付金额 return result ``` 这段程序的时间复杂度为 O(n²),适用于输入规模较小的情况(如长度不超过 500)。它严格按照定义模拟了整个过程,并确保不会重复使用同一个折扣项。 #### 测试案例验证 为了确认函数的功能正确无误,可以用几个典型测试样例进行检验: ```python print(finalPrices([8, 4, 6, 2, 3])) # 输出: [4, 2, 4, 2, 3] print(finalPrices([1, 2, 3, 4, 5])) # 输出: [1, 2, 3, 4, 5] ``` 这些结果分别对应于引用中的两个示例说明][^[^25]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值