NowCoder
题目描述
统计一个数字在排序数组中出现的次数
代码语言:javascript复制Input:
nums = 1, 2, 3, 3, 3, 3, 4, 6
K = 3
Output:
4
解题思路
代码语言:javascript复制class Solution {
public int search(int[] nums, int target) {
if(nums == null || nums.length == 0)
return 0;
// 二分
int star = binarySearch(nums, target), end = binarySearch(nums, target 1);
// 考虑target和target 1,将两个起始位置相减。注意end-star (1|0)
return end - star (nums[end] == target ? 1 : 0);
}
// 二分
private static int binarySearch(int[] nums, int target) {
int l = 0, r = nums.length - 1;
while(l < r) {
int mid = l (r - l) / 2;
// [l mid] [mid 1, r]
if(nums[mid] < target)
l = mid 1;
else
r = mid;
}
return l;
}
}