二分法题型小结
在刷题的过程中,二分法用的还是挺多的,有时候超时了往往是你没有用上二分法,今天我就来稍微总结下用的最多的三种 二分法搜索 。 一、搜索和目标值相等的数 这一类是最简单的,例如对于数组 arr = {1, 2, 5, 6, 9},要我们搜索返回目标数 target = 6,这个时候我们需要返回 6 的下标 i = 3。代码如下 int binarySearch ( int [ ] arr , int target ) { int left = 0 , right = arr . length - 1 ; while ( left <= right ) { int mid = left + ( right - left ) / 2 ; if ( arr [ mid ] == target ) return mid ; else if ( arr [ mid ] < target ) left = mid + 1 ; else return mid ; } return - 1 ; } 不过这个有一个需要注意的点,就是很多人在求 mid 的时候,会这样写 mid = (left + right) / 2; 其实这样写是有点小问题的, 因为 left + right 有可能导致数值溢出 ,从而 mid 的计算就错误了,所以经常这样写的小伙伴要注意了,严谨的写法应该是这样写: mid =