【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
来源:互联网 发布:投资大师软件怎么样 编辑:程序博客网 时间:2024/04/27 00:32
- 题目描述:
- 统计一个数字在排序数组中出现的次数。
- 输入:
每个测试案例包括两行:
第一行有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【解题思路】本题很容易想到用map和set数据结构来完成。但map的构建和最后对map的查询需要的时间代价很大,但空间和时间应该是不允许的。综合查询操作和数组的有序的特点,我们采用二分查找来确定元素是否在数组里面。若在数组里面,则将其周围的元素的个数统计完成后输出。
AC code:
#include <cstdio>#include <vector>using namespace std; int main(){ int n,m,tt; while(scanf("%d",&n)!=EOF) { vector<int> arr(n); for(int i=0;i<n;++i) scanf("%d",&arr[i]); scanf("%d",&m); for(int i=0;i<m;++i) { scanf("%d",&tt); int a=0,b=n-1,mid,cnt=0; bool flg=false; while(a<=b) { mid=((a+b)>>1); if(arr[mid]==tt){flg=true;break;} if(arr[mid]>tt)b=mid-1; if(arr[mid]<tt)a=mid+1; } if(flg) { int idx=mid; while(idx<n &&arr[idx++]==tt)++cnt; idx=mid; while(idx>0 && arr[--idx]==tt)++cnt; printf("%d\n",cnt); }else printf("0\n"); } } return 0;}/************************************************************** Problem: 1349 User: huo_yao Language: C++ Result: Accepted Time:740 ms Memory:4960 kb****************************************************************/题目链接:http://ac.jobdu.com/problem.php?pid=1349九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299
0 0
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
- 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
- [九度OnlineJudge][剑指Offer]题目1349:数字在排序数组中出现的次数
- [九度oj]题目1349:数字在排序数组中出现的次数
- 九度OJ-题目1349:数字在排序数组中出现的次数
- 【剑指Offer面试编程题】题目1373:整数中1出现的次数--九度OJ
- 剑指offer面试题目:数字在排序数组中出现的次数
- 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
- 【剑指Offer面试编程题】题目1386:旋转数组的最小数字--九度OJ
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- 九度oj 1349 数字在排序数组中出现的次数
- 题目1349:数字在排序数组中出现的次数-九度
- 【九度】题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- 九度_题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- 剑指offer 编程题(36):数字在排序数组中出现的次数
- 剑指offer题目——数字在排序数组中出现的次数
- Cocos2D-X 资料
- ruby hash
- android 常用api示例
- 导入android-support-v7-appcompat…
- eclipse下如何通过类名查找类所属j…
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
- 手斧Linux – 从LFS到Funtoo (26)
- 解决intellij idea删不掉从gitlab上克隆下来的module的问题
- Java 国际化 语言切换
- Java GUI 阅读器之面板设计
- 手斧Linux – 从LFS到Funtoo (27)
- 使用PHP+Sphinx建立高效的站内搜索引擎
- 浅析C#深拷贝与浅拷贝
- 手斧Linux – 从LFS到Funtoo (28)