九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
题目地址:http://ac.jobdu.com/problem.php?pid=1349
- 题目描述:
-
统计一个数字在排序数组中出现的次数。
- 输入:
-
每个测试案例包括两行:
第一行有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 <stdio.h>
typedef struct timesofdata{
int data;
int times;
}TimesOfData;
int Bsearch (TimesOfData hash[], int start, int end, int k){
int mid;
while (start <= end){
mid = (start + end) / 2;
if (hash[mid].data < k)
start = mid + 1;
else if (hash[mid].data > k)
end = mid - 1;
else
return hash[mid].times;
}
return 0;
}
int main(void){
int n;
int input;
TimesOfData hash[1000000];
int m;
int k;
int i;
int j;
int pre;
int flag;
while (scanf ("%d", &n) != EOF){
for (i=0, j=-1; i<n; ++i){
scanf ("%d", &input);
if (i == 0 || input != pre){
++j;
hash[j].data = input;
hash[j].times = 1;
pre = input;
}
else{
++hash[j].times;
}
}
scanf ("%d", &m);
while (m-- != 0){
scanf ("%d", &k);
printf ("%d\n", Bsearch (hash, 0, j, k));
}
}
return 0;
}
#include <stdio.h>
int Bsearch (int data[], int start, int end, int k){
int mid;
while (start <= end){
mid = (start + end) / 2;
if (data[mid] < k)
start = mid + 1;
else if (data[mid] > k)
end = mid - 1;
else
return mid;
}
return -1;
}
int main(void){
int n;
int input[1000000];
int m;
int k;
int i;
int index;
int num;
while (scanf ("%d", &n) != EOF){
for (i=0; i<n; ++i){
scanf ("%d", &input[i]);
}
scanf ("%d", &m);
while (m-- != 0){
scanf ("%d", &k);
index = Bsearch (input, 0, n-1, k);
if (index == -1)
printf ("0\n");
else{
num = 1;
i = index - 1;
while (i >= 0 && input[i--] == k)
++num;
i = index + 1;
while (i < n && input[i++] == k)
++num;
printf ("%d\n", num);
}
}
}
return 0;
}
本以为主要考的是哈希表才有了第一个程序,谁知却是考的二分查找,呵呵……
九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找的更多相关文章
- 九度oj 1349 数字在排序数组中出现的次数
原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...
- 剑指Offer - 九度1349 - 数字在排序数组中出现的次数
剑指Offer - 九度1349 - 数字在排序数组中出现的次数2013-11-23 00:47 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n, ...
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...
- 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2489 解决:742 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小. ...
- 九度oj 题目1349:数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...
- (剑指Offer)面试题38:数字在排序数组中出现的次数
题目: 统计一个数字在排序数组中出现的次数. 思路: 1.顺序遍历 顺序扫描一遍数组,统计该数字出现的次数. 时间复杂度:O(n) 2.二分查找 假设我们需要找的数字是k,那么就需要找到数组中的第一个 ...
- 剑指offer:数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数. 思路分析: 1. 直观思路是直接遍历一遍,统计.复杂度也只要O(n). 2. 显然这道题要考察的内容不这么简单,实际上考虑二分的思想来完成.分别二分查 ...
- 剑指Offer面试题:32.数字在排序数组中出现的次数
一.题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 二.解题思路 2 ...
- 【剑指offer】数字在排序数组中出现的次数
2013-09-02 16:28:35 找出数字在排序数组中出现的次数. 注意几点: 一开始试图用size_t类型表示数组的下标begin.end,到那时这样做在end = 0时,end - 1是si ...
随机推荐
- android图片的压缩和水印
学习了一下压缩和水印,以后要用到的时候可以直接来这里拷贝 activity_main.xml <LinearLayout xmlns:android="http://schemas.a ...
- Android设计模式系列-单例模式
单例模式,可以说是GOF的23种设计模式中最简单的一个. 这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),很有意思,是一个感觉上很干净的模式, ...
- Android develop tricks——整理自国外的一些Blog
ViewDragHelper --视图拖动是一个比較复杂的问题.这个类能够帮助解决不少问题.假设你须要一个样例,DrawerLayout就是利用它实现扫滑.Flavient Laurent 还写了一些 ...
- js 如何把JSON格式的字符串转换为JSON对象
直接用eval函数.例:var str1 = '{ "url": "www.51qdq.com", "name": "js&quo ...
- 让DataGridView显示行号
http://www.cnblogs.com/JuneZhang/archive/2011/11/21/2257630.html 为了表示行号,我们可以在DataGridView的RowP ...
- [AngularJS] 'require' prop in Directive or Component
When use 'require', recommend to add some error check, for example: class ChildCtrl { constructor(){ ...
- visual studio 2013 有效序列号
还没试过,可以参考下! visual studio 2013 有效序列号: BWG7X-J98B3-W34RT-33B3R-JVYW9
- OpenCMS integration with Spring MVC--reference
ref from:http://blogs.indrajitpingale.com/?p=8 http://blog.shinetech.com/2013/04/09/integrating-spri ...
- Win7无线网络共享设置方法
http://jingyan.baidu.com/article/4f34706e89bb2ae387b56d0b.html
- NekoHTML and Dom4j
http://pro.ctlok.com/2010/07/java-read-html-dom4j-nekohtml.html package com.ctlok.pro; import java.i ...