今天写题的时候发现了一个细节
这道题是用二分查找的方法解决的,我写完之后看题解发现了这样一行代码
int middle = left + ((right - left) / 2);
看题解下面的评论说这样写是为了防止溢出。
当right+left的值超过int的最大值的时候可能会溢出(哪怕最后除2后不会溢出,但是right+left还是溢出的)。
所以left+(right-left) 实际上限制了相加的两个数字的大小,不会造成溢出。
今天写题的时候发现了一个细节
这道题是用二分查找的方法解决的,我写完之后看题解发现了这样一行代码
int middle = left + ((right - left) / 2);
看题解下面的评论说这样写是为了防止溢出。
当right+left的值超过int的最大值的时候可能会溢出(哪怕最后除2后不会溢出,但是right+left还是溢出的)。
所以left+(right-left) 实际上限制了相加的两个数字的大小,不会造成溢出。