华为OD 机器人搬砖 二分法 思路
题意理解:8个小时内搬完这一堆砖头,每个仓库有一堆,机器每个小时只能在一个仓库工作,也就是说仓库如果大于8个,不可能完成。机器每个小时能办多少转?取决你在这个小时给它多少电并且充的电只能用在这个小时,例如示例1:30 12 25 8 19 ,最大砖头30,假如每个小时给30的电,总共5堆,5个小时就能办完。要求8个小时内办完即可,并且至少多少电,所以找一个数,这个数正好满足8小时内办完。
思路:
1、从1到最大砖头数max,二分取中间值dmid;
2、每天充电dmid的条件下,从砖头堆数组里面,计算,共用多少小时能够:
1 如果是大于等于8小时,right往左移,right= mid -1; 记录此刻下标的大小,比较是否最小值;
2 如果小于8,left往右移,left = left +1;
3 直到left >= right,结束。