leetcode 704 二分查找
题意:在一个升序数组里找某个数,返回其下标,若找不到返回-1
知识点:二分
解题思路:在数组中用二分找一个大于等于target且与target最接近的数
注意的点:
二分这两种形式应配套使用
while(l<r)
l=mid+1;
r=mid;
int mid=(l+r)>>1;
while(l<r)
l=mid;
r=mid-1;
int mid=(l+r+1)>>1;
完整代码:
class Solution {
public int search(int[] nums, int target) {
int l=0,r=nums.length-1;
while(l<r){
int mid=(l+r)>>1;
if(nums[mid]<target){
l=mid+1;
}
else r=mid;
}
if(nums[l]==target)return l;
return -1;
}
}