704. 二分查找
二分查找的注意点:
选择合适的查找区间:首先应该选择好每一次进行查找的的区间
如果while循环中定义的条件是left<=right,那么代表所选择的区间是
[left,right],也就是说当left==right的时候区间中还是存在有效值的。
确定区间的变化规律:left与right如何进行变化
根据选择的left<=right查找区间,可知如果target元素存在,那么target元素一定存在于 [0,mid)U(mid,end] 区间中,也就是mid位置没有可能存在 targe元素,则可以由此确定left与right的变化规律————> left=mid+1&right=mid-1
class Solution {
public int search(int[] nums, int target) {
int left=0,right= nums.length-1;
while (left<=right){
// int mid=(left+right)/2;
int mid=left+(right-left)/2;
if (nums[mid]==target)return mid;
else if (nums[mid]<target) left=mid+1;
else right=mid-1;
}
return -1;
}
}
tips:数值越界问题
int mid=(left+right)/2
如果 left+ight 值>66635 ,这么二者之和就越界了
而采用int mid=left+(right-left)/2;
则不会有二者之和越界的问题出现
#算法刷题与整理/数组