1、int mid = l + (r - l) / 2 防止溢出

int mid = l + (r - l) / 2

int mid = l + ((r - l)>>1)  如果/2写成>>1的话,>>的优先级别比较低((r - l)>>1)需要括号。

(l + r)/2

l + r可能会溢出int的最大范围

l + (r - l) / 2

减法替代了加法

l=-200,r=-99时
(l+r)/2=-149
l+(r-l)/2 =-150

(l+r)/2可能溢出,l+(r-l)/2 而不会

int mid = l + (r - l) / 2 防止溢出

 

相关文章: