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

🔗 参考

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

相关推荐
Aaron - Wistron6 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
Dxy12393102167 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
0566468 小时前
Python康复训练——常用标准库
开发语言·python·学习
极光代码工作室8 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
骊城英雄8 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰8 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
昆曲之源_娄江河畔8 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql
Leighteen8 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
0566468 小时前
Python康复训练——控制流与函数
开发语言·python·学习
峥无8 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记