有什么区别
int x = (right + left) / 2;
和
int x = left + (right - left) / 2;
只是我在第一种情况下得到了时间限制异常,在进行二分查找时在第二种情况下被接受
最佳答案
你的int变量的总和
right + left (out of integers limit)
太大,超出了整数存储限制 这就是为什么因为总和而出现溢出的原因,但是当你使用第二个版本的差异版本时
left + (right - left) (within integers limit)
适合计算,有利于机器。
关于java - 两个整数的中间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466147/