[九度oj]题目1349:数字在排序数组中出现的次数
来源:互联网 发布:mac eclipse svn 编辑:程序博客网 时间:2024/04/26 23:34
- 题目描述:
- 统计一个数字在排序数组中出现的次数。
- 输入:
每个测试案例包括两行:
第一行有1个整数n,表示数组的大小。1<=n <= 10^6。
第二行有n个整数,表示数组元素,每个元素均为int。
第三行有1个整数m,表示接下来有m次查询。1<=m<=10^3。
下面有m行,每行有一个整数k,表示要查询的数。
- 输出:
- 对应每个测试案例,有m行输出,每行1整数,表示数组中该数字出现的次数。
- 样例输入:
81 2 3 3 3 3 4 513
- 样例输出:
4
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std; int FindFirstKey(int array[],int len,int key,int low,int high){ if(low > high) return -1; int middle = (low + high)/2; int middlevalue = array[middle]; if(middlevalue == key) { if((middle > 0 && middlevalue != array[middle - 1]) || (middle == 0)) return middle; else high = middle - 1; } else if(middlevalue > key) high = middle - 1; else low = middle + 1; return FindFirstKey(array,len,key,low,high);} int FindLastKey(int array[],int len,int key,int low,int high){ if(low > high) return -1; int middle = (low + high)/2; int middlevalue = array[middle]; if(middlevalue == key) { if((middle < len -1 && middlevalue != array[middle + 1]) || (middle == len -1)) return middle; else low = low + 1;} else if(middlevalue > key) high = middle - 1; else low = middle + 1; return FindLastKey(array,len,key,low,high);}int main(int argc,char* argv[]){ int len,times,key; int RangeIndex = 0; while(scanf("%d",&len) != EOF) { int* array = new int[len]; for(int i = 0;i < len; ++i) { scanf("%d",&array[i]); } scanf("%d",×); for(int i = 0;i < times; i++) { scanf("%d",&key); int FirstKey = FindFirstKey(array,len,key,0,len-1); int LastKey = FindLastKey(array,len,key,0,len-1); RangeIndex = LastKey - FirstKey + 1; if(FirstKey == -1 || LastKey == -1) cout<<0<<endl; else cout<<RangeIndex<<endl; } delete[] array; } return 0;}
0 0
- [九度oj]题目1349:数字在排序数组中出现的次数
- 九度OJ-题目1349:数字在排序数组中出现的次数
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
- 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- 九度oj 1349 数字在排序数组中出现的次数
- 题目1349:数字在排序数组中出现的次数-九度
- 【九度】题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- 九度_题目1349:数字在排序数组中出现的次数
- [九度OnlineJudge][剑指Offer]题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- [九度oj]题目1370:数组中出现次数超过一半的数字
- 九度OJ-题目1370:数组中出现次数超过一半的数字
- 九度笔记之 1349:数字在排序数组中出现的次数
- 算法题目---数字在排序数组中出现的次数
- 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
- 九度OJ 1370 数组中出现次数超过一半的数字
- 绑定子目录
- 503状态码:防止网页被删除
- 如何使用npm打包发布nodejs程序包
- QT 控件背景透明
- centos+nginx+php-fpm+php include fastcgi_params php页面能访问但空白,被fastcgi_params与fastcgi.conf害惨了
- [九度oj]题目1349:数字在排序数组中出现的次数
- java学习——多态
- IT面试题---如何确定一棵二叉树是另一棵二叉树的子树(1)
- QTableview
- 开博第一篇
- 人品测试
- DatePickerDialog 简单用法
- ulimit -c unlimited
- pat 1021. Deepest Root