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

🔗 参考

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

相关推荐
9523619 分钟前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq
六个九十度36 分钟前
用python脚本访问被网关隔离的嵌入式设备
开发语言·python
酷酷的身影44 分钟前
Drivers/LedManager.cs
开发语言·php
卓怡学长1 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
小樱花的樱花1 小时前
Linux 线程的创建
linux·c语言·开发语言
xiaoshuaishuai81 小时前
C# AI实现PR处理、单元测试
开发语言·c#·log4j
C++、Java和Python的菜鸟1 小时前
第7章 Java高级技术
java·开发语言
LONGZHIQIN1 小时前
C#基础复习笔记
开发语言·笔记·c#
程序员佳佳1 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
可靠的仙人掌1 小时前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php