剑指 Offer 53 - I. 在排序数组中查找数字
法一:循环法
class Solution {
public int search(int[] nums, int target) {
int res = 0;
for(int i = 0;i<nums.length;i++){
if(nums[i]==target){
res++;
}
}
return res;
}
}
法二:二分法
因为是有序的,所以通过俩侧找边界来解决。
class Solution {
public int search(int[] nums, int target) {
return helper(nums, target) - helper(nums, target - 1);
}
int helper(int[] nums, int tar) {
int i = 0, j = nums.length - 1;
while(i <= j) {
int m = (i + j) / 2;
if(nums[m] <= tar) i = m + 1;
else j = m - 1;
}
return i;
}