统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是一个非递减数组
-109 <= target <= 109
解题思路
双指针
1.双指针i
,j
分别指向开始和结尾,从两边往中间遍历.
2.当i
和j
对应的值相等并且等于target
时,返回差值+1就为个数.
代码:
cpp
class Solution {
public:
int search(vector<int>& nums, int target) {
int i=0,j = nums.size()-1;
while(i<=j){
if(nums[i]==nums[j]&&nums[i]==target){
return j-i+1;
}
if(nums[i]<target){
i++;
}
if(nums[j]>target){
j--;
}
}
return 0;
}
};