public static long minimumTime(int[] time, int totalTrips) {
Arrays.sort(time);
//二分查找
long l=time[0];
long r=(long)time[0]*totalTrips;//int计算结果溢出要强转
while (l<r){
long mid=(r-l)/2+l;
long cnt=0;
for (int i = 0; i < time.length; i++) {
cnt+=mid/time[i];
if(cnt>totalTrips)
break;
}
//如果大于等于,继续向左查找,并保留mid
if(cnt>=totalTrips)
r=mid;
else
l=mid+1;
}
return r;//最终两指针相遇
}