統計一個數字在排序數組中出現的次數。
示例 1:
輸入: nums = [5,7,7,8,8,10], target = 8
輸出: 2
示例 2:
輸入: nums = [5,7,7,8,8,10], target = 6
輸出: 0
限制:
0 <= 數組長度 <= 50000
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解答:
1)直接遍歷
class Solution {
public:
int search(vector<int>& nums, int target) {
int sum;
for(int i=0;i<nums.size();i++){
if(nums[i]==target){
sum++;
}
}
return sum;
}
};在這裏插入代碼片
2)二分查找
找出左右邊界
class Solution {
public:
int search(vector<int>& nums, int target) {
int i=0, j=nums.size()-1;
while(i<=j){
int m=(j+i)/2;
if(nums[m]<=target){
i = m+1;
}
else{
j=m-1;
}
}
int right = i;
if(j>=0&&nums[j]!=target) return 0;
i=0;j=nums.size()-1;
while(i<=j){
int m=(j+i)/2;
if(nums[m]<target){
i = m+1;
}
else{
j=m-1;
}
}
int left = j;
return right-left-1;
}
};