题目描述
统计一个数字在排序数组中出现的次数。、
时间限制:1秒 空间限制:32768K 热度指数:182602
本题知识点: 数组
思路
一.穷举
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int count=0;
for(int i=0;i<data.size()&&data[i]<=k;++i)
{
if(data[i]==k)
++count;
}
return count;
}
};
二.二分搜索
二分查找各种变种见:
二分查找
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
return (biSearch(data,0,data.size()-1,k+0.5)-biSearch(data,0,data.size()-1,k-0.5));
}
int biSearch(vector<int> num,int left,int right,double k)
{
int mid;
while(left<=right)
{
mid=(left+right)/2;
if(num[mid]==k)
return mid;
else if(num[mid]>=k)
right=mid-1;
else
left=mid+1;
}
return left;
}
};