【Leetcode 每日一题】1760. 袋子里最少数目的球

问题背景

给你一个整数数组 n u m s nums nums,其中 n u m s [ i ] nums[i] nums[i] 表示第 i i i 个袋子里球的数目。同时给你一个整数 m a x O p e r a t i o n s maxOperations maxOperations。

你可以进行如下操作至多 m a x O p e r a t i o n s maxOperations maxOperations 次:

选择任意一个袋子,并将袋子里的球分到 2 2 2 个新的袋子中,每个袋子里都有 正整数 个球。

  • 比方说,一个袋子里有 5 5 5 个球,你可以把它们分到两个新袋子里,分别有 1 1 1 个和 4 4 4 个球,或者分别有 2 2 2 个和 3 3 3 个球。

你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。

请你返回进行上述操作后的最小开销。

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 1 0 5 1 \le nums.length \le 10 ^ 5 1≤nums.length≤105
  • 1 ≤ m a x O p e r a t i o n s , n u m s [ i ] ≤ 1 0 9 1 \le maxOperations, nums[i] \le 10 ^ 9 1≤maxOperations,nums[i]≤109

解题过程

遇到最小化最大值,最大化最小值,要考虑二分答案法。

这题可能的结果范围就是由数组中的最小最大值构成的,在这个范围上,每组中可放的球越少,要操作的次数就越多。

二分的标准,是按照当前数量分组能不能满足在规定的最大操作次数以内完成分割。

具体实现

java 复制代码
class Solution {
    public int minimumSize(int[] nums, int maxOperations) {
        int max = 0;
        for (int num : nums) {
            max = Math.max(max, num);
        }

        int left = 1;
        int right = max;
        while (left < right) {
            int mid = left + ((right - left) >>> 1);
            if (check(nums, maxOperations, mid)) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }

    private boolean check(int[] nums, int maxOperations, int max) {
        long res = 0;
        for (int num : nums) {
            res += (num - 1) / max;
        }
        return res <= maxOperations;
    }
}
相关推荐
水木流年追梦5 分钟前
大模型入门-Reward 奖励模型训练
开发语言·python·算法·leetcode·正则表达式
JavaWeb学起来5 分钟前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
沙威玛_LHE14 分钟前
P13376题解
算法
DFT计算杂谈36 分钟前
KPROJ编译教程
java·前端·python·算法·conda
重生之我是Java开发战士1 小时前
【笔试强训】Week5:空调遥控, kotor和气球,走迷宫,主持人调度II,体操队形,二叉树的最大路径和,排序子序列,消减整数
java·算法·动态规划
吃好睡好便好2 小时前
用if…end…语句计算分段函数
开发语言·人工智能·学习·算法·matlab
灰灰勇闯IT2 小时前
ops-memory:CANN Runtime 的 Tensor 内存管理
算法
叶子Talk2 小时前
OpenAI破解80年数学猜想,AI首次做出原创证明
人工智能·数学·算法·机器学习·ai·openai·ai推理
MhZhou04123 小时前
1.11M参数小模型实现脑瘤分割 CVPR 2026 Findings 开源
算法·计算机视觉·3d·空间计算
有为少年3 小时前
Welford算法 | 从单一到批次
大数据·人工智能·深度学习·神经网络·算法·机器学习