java - 两个整数的中间值

标签 java integer binary-search

有什么区别

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/

相关文章:

java - map 应用程序在打开时崩溃

Java 自动装箱和使用运算符比较对象

arrays - 这是在 Julia 中将整数转换为字节数组的最快方法

java - 为什么 count 的值没有改变

python - 二分查找是如何工作的?

c - 在 C 中搜索数据结构数组的成员

java - 二进制搜索不起作用 - 非数组。

java - `org.springframework.transaction.annotation.Transactional` 的行为

java - Android 上的 Snackbar 无需更改主题

java - Box2D 中相机跟随目标