【灵神题单·贪心】2279. 装满石头的背包的最大数量 | 排序贪心 | Java

🔗 题目链接:2279. 装满石头的背包的最大数量

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

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

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

📖 题目描述

现有 n 个背包。给你两个数组 capacityrocks。第 i 个背包最大可以装 capacity[i] 块石头,当前已经装了 rocks[i] 块石头。另给你 additionalRocks 块额外的石头,可以往任意背包中放。

返回放置后装满石头的背包的最大数量

示例 1

```

输入:capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2

输出:3

解释:1 块石头放入背包 0,1 块石头放入背包 1。

背包 0、1、2 都装满了。总计 3 个背包装满。

```

示例 2

```

输入:capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100

输出:3

解释:8 块石头放入背包 0,2 块石头放入背包 2。全部装满。

```

提示

  • 1 <= n <= 5 * 10^4
  • 1 <= capacity[i] <= 10^9
  • 0 <= rocks[i] <= capacity[i]
  • 1 <= additionalRocks <= 10^9

💡 思路分析

每个背包还差 gap[i] = capacity[i] - rocks[i] 块石头才能装满。

要装满尽可能多的背包,应该优先填 gap 最小的------花最少的石头装满一个包,这样手里的额外石头就能多装几个。

就像你有一笔固定预算给空调房间补温,肯定先补差距最小的房间,这样能"达标"的房间最多 🏠

算法步骤

  1. 算差值gap[i] = capacity[i] - rocks[i]
  2. 排序:gap 从小到大排
  3. 贪心填充:从 gap 最小的开始,依次扣减 additionalRocks,直到石头不够

✅ 代码实现(Java)

```java

class Solution {

public int maximumBags(int[] capacity, int[] rocks, int additionalRocks) {

int n = capacity.length;

int[] gap = new int[n];

for (int i = 0; i < n; i++) {

gap[i] = capacity[i] - rocks[i];

}

Arrays.sort(gap);

int count = 0;

for (int i = 0; i < n; i++) {

if (gap[i] == 0) {

count++;

} else if (additionalRocks >= gap[i]) {

additionalRocks -= gap[i];

count++;

} else {

break;

}

}

return count;

}

}

```

📊 复杂度分析

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

🔗 参考

🎯 和前两题一脉相承------排序后从最小/最大开始贪心。这次是"差值最小的优先填",核心逻辑三行代码就搞定。

相关推荐
庞轩px13 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
代钦塔拉14 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
tongluowan00715 小时前
一个请求在Spring MVC 中是怎么流转的
java·spring·mvc
夜郎king15 小时前
Spring AI 对接大模型开发易错点总结与实战解决办法
java·人工智能·spring
InfinteJustice15 小时前
踩坑分享C 语言文件操作全攻略:从基础读写到随机访问与缓冲区原理
c语言·开发语言·microsoft
码云数智-大飞15 小时前
滥用Lombok的@EqualsAndHashCode导致线上事故复盘
开发语言
yong999015 小时前
C# 实时查看硬件使用率(CPU 内存 硬盘 网络)
开发语言·网络·c#
oradh16 小时前
Oracle数据库中的Java概述
java·数据库·oracle·sql基础·oracle数据库java概述
组合缺一16 小时前
Java AI 框架三国杀:Solon AI vs Spring AI vs LangChain4j 深度对比
java·人工智能·spring·ai·langchain·llm·solon
不午休の野猫16 小时前
vs + qt环境编译.sln项目时报无法解析的外部符号metaObject && qt_metacast
开发语言·qt