《牛客网剑指offer37题》统计一个数字在排序数组中出现的次数
来源:互联网 发布:全球进出口数据 编辑:程序博客网 时间:2024/06/11 17:22
题目:统计一个数字在排序数组中出现的次数
结果:牛客网编程通过
思路及程序:
//中心思想,用二分法找到第一个等于K的数组元素,然后向两边移动,直到找到不等于k的元素
int GetNumberOfK(vector<int> data ,int k) {
int len = data.size();
if(len == 0) return 0; //数组长度是0,返回0
if(len == 1) return (data[0]==k)?1:0; //数组长度是1,如果这个元素等于k返回1,否则返回0
int i=0,j=len-1; //二分法是从0到len-1
int result = 0;
while(i<j){
int n = (i+j)/2;
if(data[n] == k){
int temp = n;
while(temp>=0){ //找到了先向左移动找等于k的元素个数
if(data[temp] == k)
result++;
else
break;
--temp;
}
temp = n;
while(temp<len){ //再向右移动等于k的元素个数
if(data[temp] == k)
result++;
else
break;
++temp;
}
return --result; //第一次找到的重复了,要减去1
}
else if(data[n] > k){
j = n-1; //如果k是比中间元素小,将后面的指针j指向中间前一个
}
else{
i = n+1; //如果k比中间元素大,将后面指针指向中间元素后一个
}
}
return result;
}
- 《牛客网剑指offer37题》统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- (4)统计一个数字,在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数(二分法)
- 剑指offer-38 统计一个数字在排序数组中出现的次数
- 游戏开发中常用的设计模式
- C语言中,整型变量x小于0,是否可知x*2也小于0
- ubuntu开机启动Mongo脚本以及使用root权限执行的脚本(快捷方式)
- 科普:虚拟服务器(VPS)和虚拟主机(空间)的区别
- 阿里巴巴iconfont使用方式
- 《牛客网剑指offer37题》统计一个数字在排序数组中出现的次数
- css权重
- Linux 的 umask
- 二叉树的镜像
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- JAVA单例模式
- Android获取当前系统日期和时间
- Redis安装配置与Jedis访问数据库
- 89. Gray Code