两个整数的中间值

mid value of two integers

有什么区别

int x = (right + left) / 2;

int x = left + (right - left) / 2;

只是我在第一种情况下得到了时间限制异常,在进行二分查找时在第二种情况下被接受了

整数限制(绑定)为 2,147,483,647。

您的 right+left 值超出了 int 的范围。
但是 left + (right - left) / 2 值小于 int 界限,所以这就是第二个表达式工作正常的原因。

如果您添加这么大的数字,请使用 long

你的int变量的总和

right + left (out of integers limit)

太大,超过了整数存储限制 这就是为什么因为总和而溢出的原因,但是当你使用差异版本时,第二个

left + (right - left) (within integers limit)

适合计算,有利于机器