统计一个数字在排序数组中出现的次数。
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
限制:0 <= 数组长度 <= 50000
二分查找
- 首先想到两遍二分查找
- 但是,二分查找的函数其实不用写两个
- 我们只要改一下target就行了
- 由于有重复的元素,我们使用 < 的找边界的办法
- 找边界,用<,所以right = nums.length
- 区间是左闭右开区间
const search = function (nums, target) {return helper(nums, target) - helper(nums, target - 1);};// 找区间的用这种 <// 找一个下标的用 <=function helper(nums, target) {let left = 0, right = nums.length;while (left < right) {const mid = left + ((right - left ) >> 1);// 收缩左边界if (nums[mid] == target) {left = mid + 1;}else if (nums[mid] < target) {left = mid + 1;}else if (nums[mid] > target) {right = mid;}}return left;}
