二分查找>
注意:nums数组需要是递增数组
思路:
- 设置上下界:l、r
- 计算中间索引mid,并将对应索引的数据与查找目标target对比
- 相等:返回mid索引
- target大:需要查找的数据应该在区间[mid+1,r]
- target小:需要查找的数据应该在区间[l,mid-1]
- 当l>r时,依旧没有找到,说明该数值并不在该数组中
class Solution {
public int search(int[] nums, int target) {
int l = 0;
int r = nums.length-1;
int mid;
while (l<=r){
mid = (l+r)>>1;
if (nums[mid]==target) return mid;
else if (nums[mid]<target) l = mid + 1;
else r = mid - 1;
}
return -1;
}
}