统计一个数字在排序数组中出现的次数。
示例输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
暴力遍历。
Java实现class Solution {
public int search(int[] nums, int target) {
int n = nums.length;
int flag = 0;
for (int i = 0; i < n; i++){
if (nums[i] == target) flag++;
}
return flag;
}
}
方法2
二分查找。
Java实现class Solution {
public int search(int[] nums, int target) {
int n = nums.length;
int l = 0, r = n - 1;
int flag1 = 0, flag2 = 0;
if (n == 0) return 0;
//先找左边界
while (l < r){
int mid = l + r >> 1;
if (nums[mid] >= target) r = mid;
else l = mid + 1;
}
if (nums[l] != target) return 0;
else{
flag1 = l;
l = 0;
r = n - 1;
//找右边界
while (l < r){
int mid = l + r + 1 >> 1;
if (nums[mid] <= target) l = mid;
else r = mid - 1;
}
flag2 = l;
}
return flag2 - flag1 + 1;
}
}



