关于Java里long的越界问题
1L的位置不同,得到的结果也不同
当放在后面时,前面的int类型已经越界了,所以后面再转换已经没用了
long right=time[0]*totalTrips*1L;
比如1000* 100000 *1L
而在前面时
贴上整题代码
public long minimumTime(int[] time, int totalTrips) {
Arrays.sort(time);
long left=0;
long right=1L*time[0]*totalTrips;
while (left<right)
{
long mid=left+(right-left)/2;
int curTime=0;
for (int tripTime :
time) {
if (mid<tripTime)
break;
curTime+=mid/tripTime;
}
if (curTime>=totalTrips)
right=mid;
else left=mid+1;
}
return left;
}