数字在排序数组中出现的次数,有30个数组,每个数组里面有700个数,升序排列
NC74在升序排列中出现的次数
知识点数组二分法
说明给定一个长度为N的非降序数组和一个非负整数K,需要统计K在数组中出现的次数。
数据范围:数组中每个元素的值满足
需求:空间复杂度,时间复杂度
示例1输入:
[1,2,3,3,3,4,5],3返回值:
4例2输入:
[1,3,4,5],6返回值:
0暴力解决问题省略~
二元分解法
#包含位/标准数据。h
使用命名空间std
int GetNumberOfK(向量int数据,int k)
{
if(data . size()==0 k data . front() k data . back())
{
返回0;
}
int left=0;
int right=data . size()-1;
int len=0;
int mid
while(左=右)
{
mid=(左右)/2;
if (data[mid]==k)
{
打破;
}
if (k数据[mid])
{
右=中1;
}
其他
{
左=中1;
}
}
int i=mid
while (i=左数据[i]==k)
{
len
I-;
}
I=mid 1;
while (i=右数据[i]==k)
{
len
我;
}
返回len
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。