机器人仓库搬砖-Java-OD统一考试(C卷)

题目描述

机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化尽量减小每次补充的能量格数 为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。

1、无需考虑机器人补充能量格的耗时,2、无需考虑机器人搬砖的耗时;3、机器人每小时补充能量格只在这一个小时中有效;

输入描述

第一行为一行数字,空格分隔

输出描述

机器人每小时最少需要充的能量格,若无法完成任务,输出 -1

示例1

| 输入 | 30 12 25 8 19 |

| 输出 | 15 |

示例2

| 输入 | 10 12 25 8 19 8 6 4 17 19 20 30 |

| 输出 | -1 |

Java

import java.util.*;

public class Main {
    public static int minEnergyBlocks(int[] bricks, int hours) {
        if (bricks.length > 8) { // 如果砖块数量大于8
            return -1; // 返回-1
        }
        int left = 1, right = Arrays.stream(bricks).max().getAsInt(); // 初始化左右边界
        while (left < right) { // 二分查找
            int middle = (left +

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试刷题 文章被收录于专栏

华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务