【灵神题单·贪心】1833. 雪糕的最大数量 | 排序贪心 | Java

🔗 题目链接:1833. 雪糕的最大数量

📚 所属题单:灵茶山艾府 · 贪心算法题单 --- §1.1 从最小/最大开始贪心

🏷️ 难度:Medium | 难度分:1253

🔖 标签:贪心、数组、排序

📖 题目描述

商店中新到 n 支雪糕,用数组 costs 表示每支雪糕的价格。Tony 一共有 coins 现金,想买尽可能多的雪糕(按任意顺序)。

返回 Tony 能买到的雪糕的最大数量

示例 1

复制代码
输入:costs = [1,3,2,4,1], coins = 7
输出:4
解释:买下标 0、1、2、4 的雪糕,总价 1+3+2+1=7

示例 2

复制代码
输入:costs = [10,6,8,7,7,8], coins = 5
输出:0
解释:买不起任何一支雪糕。

示例 3

复制代码
输入:costs = [1,6,3,1,2,5], coins = 20
输出:6
解释:可以买下所有雪糕,总价 18。

提示

  • 1 <= n <= 10^5
  • 1 <= costs[i] <= 10^5
  • 1 <= coins <= 10^8

💡 思路分析

想买最多的雪糕 → 先挑便宜的买

排序后从最便宜的开始拿,一支一支买到钱花完。这不就是逛超市抢打折品的最优策略嘛 🍦

算法步骤

  1. 排序:价格从小到大排
  2. 贪心购买:依次买最便宜的,每买一支扣钱,钱不够就停

✅ 代码实现(Java)

java 复制代码
class Solution {
    public int maxIceCream(int[] costs, int coins) {
        // 排序:从便宜到贵
        Arrays.sort(costs);
        int count = 0;
        for (int cost : costs) {
            if (coins >= cost) {
                coins -= cost;
                count++;
            } else {
                break; // 钱不够了
            }
        }
        return count;
    }
}

📊 复杂度分析

复杂度 说明
⏱️ 时间 O(n log n) 排序
💾 空间 O(log n) 排序栈空间

🔗 参考

🍦 买雪糕的最优策略 = 先买便宜的。贪心题做到这里,模式已经非常清晰了:排序 + 从最小/最大开始遍历。

相关推荐
nanxun8861 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103514 小时前
Day01 | Java 基础(Java SE)
java
行者全栈架构师5 小时前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师9 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_09 小时前
mac(m5)平台编译openjdk
java
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程