题目
给你一个数组 time ,其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。
每辆公交车可以 连续 完成多趟旅途,也就是说,一辆公交车当前旅途完成后,可以 立马开始 下一趟 旅途。每辆公交车 独立 运行,也就是说可以同时有多辆公交车在运行且互不影响。
给你一个整数 totalTrips ,表示所有公交车 总共 需要完成的旅途数目。请你返回完成 至少 totalTrips 趟旅途需要花费的 最少 时间
ps
想了半天没想出来二分,做题太少
class Solution {
public:
long long minimumTime(vector<int>& time, int totalTrips) {
sort(time.begin(), time.end());
long long r = (long long)time[0] * totalTrips;
long long l = 0;
while (l < r) {
long long mid = l + (r - l) / 2;
long long cnt = 0;
for (int t : time) {
if (mid < t) break;
cnt += mid / t;
}
if (cnt >= totalTrips) {
r = mid;
} else {
l = mid + 1;
}
}
return r;
}
};