一,二分法处理数据时
int mid = (left + right) / 2; 例如 left 和 right 都是最⼤ int ,会因为left+right超过int而溢出,于是提出了如下办法:
int mid = left + (right - left) / 2; 这样就不会溢出了,等价于:int mid = left + (right - left) >>1;
这写法相当于是如果数组⻓度为偶数,中间位置有两个元素,取靠左边的。
二,整数相乘越界
if(mid * mid <= x)
这样写的话,mid * mid可能越界,因此可以改为:if(mid <= x/mid)
三,整数本身越界
int n = x;
Leetcode给了个例子,x = 2147483647,导致n越界,因此将int改为long long int。
long long int n = x;