题目:
统计一个数字在排序数组中出现的次数。
解答:
思路:
因为是有序数组,所以可以通过二分查找法查找出target的右边界和target-1的右边界,二者相减就是target出现的次数。
代码:
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;
}
}