用二分的方法找到最短天数,这样需要设置右边界。因为time[i],totalTrips<=107,极限条件为time里只有一个数据(一辆车),而totalTrips为107,这样有边界就得为10**14.
然后就是二分查找的方式,逐渐缩小范围。
class Solution {
public:
long long minimumTime(vector<int>& time, int totalTrips) {
long long l = 1 , r = 1e14;
while(l<r){
long long m = (l+r) >> 1 , cnt=0;
for (int i = 0;i < time.size();i++){
cnt += m/time[i];
if (totalTrips <= cnt){
r = m;
break;
}
}
if (cnt < totalTrips){
l = m+1;
}
}
return l;
}
};