【灵神题单·贪心】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) 排序栈空间

🔗 参考

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

相关推荐
2501_908329851 小时前
嵌入式LinuxC++开发
开发语言·c++·算法
实在智能RPA1 小时前
实在 Agent 支持哪些企业业务场景的自动化?全行业智能自动化场景深度拆解
java·运维·自动化
左左右右左右摇晃2 小时前
Java并发——偏向锁
java
moxiaoran57532 小时前
使用springboot+flowable实现一个简单的订单审批工作流
java·spring boot·后端
牧天白衣.2 小时前
07-常用API
java
Meepo_haha2 小时前
Tomcat闪退问题以及解决原因(三种闪退原因有解决办法)
java·tomcat·firefox
兑生2 小时前
【灵神题单·贪心】3010. 将数组分成最小总代价的子数组 I | Java
java·开发语言·算法
Java面试题总结2 小时前
go从零单排之方法
开发语言·后端·golang
Jay_Franklin2 小时前
Python一站式科研工作流:从数据分析到报告生成
开发语言·python·论文笔记