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

🔗 参考

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

相关推荐
wzdark1 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
潜创微科技1 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
cnkeysky1 小时前
idea 中的 maven 项目重新加载子模块
java·idea
Escalating_xu1 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
今天AI了吗1 小时前
什么是 AI Agent?它与直接调用大模型 API 有何区别
java·网络·人工智能·架构·java-ee
傲世仙尊1 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
隐退山林2 小时前
JavaEE进阶:SpringAOP
java·java-ee
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之方法级安全注解
java·安全·spring
cvby2 小时前
C++11
开发语言·c++
JavacKaka2 小时前
LiteFlow规则引擎实战博客-2026-09-09
java