AcWing 67. 数字在排序数组中出现的次数
原题链接
简单
作者:
繁花似锦
,
2019-12-30 23:48:07
,
所有人可见
,
阅读 620
直接使用multiset的count(), 返回某一个数的个数
#include <set>
class Solution {
public:
int getNumberOfK(vector<int>& nums , int k) {
multiset<int> res;
for(int i=0;i<nums.size();i++)
{
res.insert(nums[i]);
}
return res.count(k);
}
};
二分找到数字,如果符合再从这里往后找一直相同的
注意:二分得到的答案符合边界,但不一定满足题意!!!
特判空数组的情况
class Solution {
public:
int getNumberOfK(vector<int>& nums , int k) {
if(nums.empty()) return 0;
else
{
int l=0,r=nums.size()-1;
while(l<r)
{
int mid=l+r>>1;
if(nums[mid]>=k) r=mid;
else l=mid+1;
}
int cnt=0;
while(nums[l++]==k) cnt++;
return cnt;
}
}
};