当我们在找 L 和 R 中间的元素时(比如:二分查找算法),
首先想到的是通过mid = (L + R) / 2
的方式,在这样回存在一个问题,那就是内存溢出,
这里首先设定 L 和 R 是 int 类型,且不会超出 int 的范围,这时候 L + R 是否超过int的范围就不确定了,就可能会造成内存溢出
换一种方式获得中间的值,mid = L + (R - L) / 2
,我们知道了L和R都不会超出int类型的范围,那么 R - L 就一定不会溢出,当然 (R - L) / 2 就一定不会溢出,那么 L + (R - L) / 2不会超过 R 就不会出现溢出的问题。