聊城专业网站设计公司,国家企业信用信息公示网查询(全国),武隆网站建设哪家好,常州市住房和城乡建设局网站文章目录1. 题目2. 解题1. 题目
你有 n 台电脑。给你整数 n 和一个下标从 0 开始的整数数组 batteries #xff0c;其中第 i 个电池可以让一台电脑 运行 batteries[i] 分钟。 你想使用这些电池让 全部 n 台电脑 同时 运行。
一开始#xff0c;你可以给每台电脑连接 至多一个…
文章目录1. 题目2. 解题1. 题目
你有 n 台电脑。给你整数 n 和一个下标从 0 开始的整数数组 batteries 其中第 i 个电池可以让一台电脑 运行 batteries[i] 分钟。 你想使用这些电池让 全部 n 台电脑 同时 运行。
一开始你可以给每台电脑连接 至多一个电池 。 然后在任意整数时刻你都可以将一台电脑与它的电池断开连接并连接另一个电池你可以进行这个操作 任意次 。 新连接的电池可以是一个全新的电池也可以是别的电脑用过的电池。 断开连接和连接新的电池不会花费任何时间。
注意你不能给电池充电。
请你返回你可以让 n 台电脑同时运行的 最长 分钟数。
示例 1
输入n 2, batteries [3,3,3]
输出4
解释
一开始将第一台电脑与电池 0 连接第二台电脑与电池 1 连接。
2 分钟后将第二台电脑与电池 1 断开连接并连接电池 2 。注意电池 0 还可以供电 1 分钟。
在第 3 分钟结尾你需要将第一台电脑与电池 0 断开连接然后连接电池 1 。
在第 4 分钟结尾电池 1 也被耗尽第一台电脑无法继续运行。
我们最多能同时让两台电脑同时运行 4 分钟所以我们返回 4 。示例 2
输入n 2, batteries [1,1,1,1]
输出2
解释
一开始将第一台电脑与电池 0 连接第二台电脑与电池 2 连接。
一分钟后电池 0 和电池 2 同时耗尽所以你需要将它们断开连接并将电池 1 和第一台电脑连接电池 3 和第二台电脑连接。
1 分钟后电池 1 和电池 3 也耗尽了所以两台电脑都无法继续运行。
我们最多能让两台电脑同时运行 2 分钟所以我们返回 2 。提示
1 n batteries.length 10^5
1 batteries[i] 10^9来源力扣LeetCode 链接https://leetcode-cn.com/problems/maximum-running-time-of-n-computers 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
二分查找答案 mid对于电池 mid 的只能给一个电脑使用 mid 的电池可以凑起来给一个电脑使用
class Solution {
public:long long maxRunTime(int n, vectorint batteries) {long long l 1, r 1e15, mid, ans 0;while(l r){mid (lr)1;if(ok(batteries, mid, n)){ans mid;l mid1;}elser mid-1;}return ans;}bool ok(vectorint bat, long long t, int n){long long num 0, total 0;for(auto b : bat){if(b t) num; // 大于mid的电池给一个电脑使用else{total b;if(total t)//凑起来的电量给一个电脑使用{num;total - t;}}}return num n; // 能够满足 n 个电脑}
};140 ms 54.4 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步