剑指 Offer 53 - I. 在排序数组中查找数字 I
思路:直接二分查找,再往左往右查找
class Solution {
public int search(int[] arr, int target) {
int l = 0 , r = arr.length , mid,ans = 0;
while(l<r){
mid = arr[(l + r ) / 2 ];
if(mid > target) r--;
else if(mid < target) l++;
else{
ans = 1;
int j = (l + r )/ 2 - 1;
int i = (l + r) / 2 + 1;
// System.out.println(l+r) 往左右查找
while( j < arr.length && j >= 0 && arr[j--] ==target) ans++;
while( i >= 0 && i < arr.length && arr[i++] ==target) ans++;
return ans;
}
}
return 0 ;
}
}