文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。

你可以进行如下操作至多 maxOperations 次:

选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有 正整数 个球。
比方说,一个袋子里有 5 个球,你可以把它们分到两个新袋子里,分别有 1 个和 4 个球,或者分别有 2 个和 3 个球。
你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。

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

示例 1:
输入:nums = [9], maxOperations = 2
输出:3
解释:
- 将装有 9 个球的袋子分成装有 6 个和 3 个球的袋子。[9] -> [6,3] 。
- 将装有 6 个球的袋子分成装有 3 个和 3 个球的袋子。[6,3] -> [3,3,3] 。
装有最多球的袋子里装有 3 个球,所以开销为 3 并返回 3 。示例 2:
输入:nums = [2,4,8,2], maxOperations = 4
输出:2
解释:
- 将装有 8 个球的袋子分成装有 4 个和 4 个球的袋子。[2,4,8,2] -> [2,4,4,4,2] 。
- 将装有 4 个球的袋子分成装有 2 个和 2 个球的袋子。[2,4,4,4,2] -> [2,2,2,4,4,2] 。
- 将装有 4 个球的袋子分成装有 2 个和 2 个球的袋子。[2,2,2,4,4,2] -> [2,2,2,2,2,4,2] 。
- 将装有 4 个球的袋子分成装有 2 个和 2 个球的袋子。[2,2,2,2,2,4,2] -> [2,2,2,2,2,2,2,2] 。
装有最多球的袋子里装有 2 个球,所以开销为 2 并返回 2 。示例 3:
输入:nums = [7,17], maxOperations = 2
输出:7提示:
1 <= nums.length <= 10^5
1 <= maxOperations, nums[i] <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-limit-of-balls-in-a-bag
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 极小极大化 就用 二分查找
class Solution {public:int minimumSize(vector<int>& nums, int maxOperations) {int l = 1, r = 1e9, mid, ans;while(l <= r){mid = l+((r-l)>>1);if(ok(nums, mid, maxOperations)){ans = mid;r = mid - 1;}elsel = mid + 1;}return ans;}bool ok(vector<int>& nums, int maxN, int maxOperations){int op = 0;for(auto n : nums){op += ceil(double(n)/maxN)-1;if(op > maxOperations)return false;}return true;}
};

168 ms 47.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1760. 袋子里最少数目的球(二分查找)相关推荐

  1. LeetCode 2171. 拿出最少数目的魔法豆

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给你一个正整数数组 b ...

  2. LeetCode 729. 我的日程安排表 I(set 二分查找)

    文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...

  3. [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)

    [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...

  4. LeetCode 2171. 拿出最少数目的魔法豆(排序)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 正 整数数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目. 请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 ...

  5. LeetCode 1498. 满足条件的子序列数目(排序+二分查找+快速幂)

    1. 题目 给你一个整数数组 nums 和一个整数 target . 请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目. 由于答案可能很大 ...

  6. LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 你准备参加一场远足活动.给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row ...

  7. LeetCode 792. 匹配子序列的单词数(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数. 示例: 输入: S = "abcde" ...

  8. LeetCode 1901. 找出顶峰元素 II(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上.下.左.右)的元素. 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中 ...

  9. LeetCode 1838. 最高频元素的频数(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 元素的 频数 是该元素在一个数组中出现的次数. 给你一个整数数组 nums 和一个整数 k . 在一步操作中,你可以选择 nums 的一个下标,并将该下标 ...

最新文章

  1. 首长,Redis性能优化十三条军规立好了,请过目~
  2. 46 万奖金等你拿 | 微众银行第二届金融科技高校技术大赛报名中
  3. 《C程序设计的抽象思维》1.9编程练习
  4. HTTP/TCP/IP协议
  5. GCC中的分支预测(likely和unlikey)
  6. Java 面试知识点解析(三)——JVM篇
  7. 基于Spatial CNN的车道线检测和交通场景理解
  8. virtualenv在windows10下面使用的注意事项
  9. bat 存储过程返回值_使用Mybatis过程中遇到的坑
  10. Repeater控件绑定数据、分页、数据操作,最佳代码
  11. html中如何使用渐变颜色代码,html – 如何在CSS中使用渐变作为字体颜色?
  12. Spring Cloud中的分布式组件五花八门,我到底该怎么学?
  13. 1106. Lowest Price in Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)
  14. jQuery解决iframe高度自适应的一例代码
  15. 安徽二本大学计算机排名,2018安徽大学排名 安徽有哪些大学
  16. C# 短视频 无水印解析 原视频下载(超详细)
  17. 数据库课程设计:某自来水公司收费管理系统(SQL Server)
  18. docker部署微服务项目
  19. 上海交大考研823网络空间安全经验分享
  20. oracle下载,windows版本的oracle数据库下载

热门文章

  1. 前端之 BOM 和 DOM
  2. Python 内置模块之 re
  3. pycharm 快捷键大全
  4. 机器学习之数理统计与参数估计的相关知识总结
  5. Linux视频 pad,Wine 1.9.10 发布下载, 改善视频输出
  6. x210开发板的三种启动方式(三星推荐的,分散加载,uboot采用的)
  7. c语言枚举法礼泡声次数,C语言枚举类型举例
  8. 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原
  9. Hadoop学习笔记—10.Shuffle过程那点事儿
  10. socket-select函数