题目地址: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 数字在排序数组中出现的次数 -- 二分查找的更多相关文章

  1. 九度oj 1349 数字在排序数组中出现的次数

    原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...

  2. 剑指Offer - 九度1349 - 数字在排序数组中出现的次数

    剑指Offer - 九度1349 - 数字在排序数组中出现的次数2013-11-23 00:47 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n, ...

  3. 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ

    题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...

  4. 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2489 解决:742 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小. ...

  5. 九度oj 题目1349:数字在排序数组中出现的次数

    题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...

  6. (剑指Offer)面试题38:数字在排序数组中出现的次数

    题目: 统计一个数字在排序数组中出现的次数. 思路: 1.顺序遍历 顺序扫描一遍数组,统计该数字出现的次数. 时间复杂度:O(n) 2.二分查找 假设我们需要找的数字是k,那么就需要找到数组中的第一个 ...

  7. 剑指offer:数字在排序数组中出现的次数

    题目描述: 统计一个数字在排序数组中出现的次数. 思路分析: 1. 直观思路是直接遍历一遍,统计.复杂度也只要O(n). 2. 显然这道题要考察的内容不这么简单,实际上考虑二分的思想来完成.分别二分查 ...

  8. 剑指Offer面试题:32.数字在排序数组中出现的次数

    一.题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 二.解题思路 2 ...

  9. 【剑指offer】数字在排序数组中出现的次数

    2013-09-02 16:28:35 找出数字在排序数组中出现的次数. 注意几点: 一开始试图用size_t类型表示数组的下标begin.end,到那时这样做在end = 0时,end - 1是si ...

随机推荐

  1. android图片的压缩和水印

    学习了一下压缩和水印,以后要用到的时候可以直接来这里拷贝 activity_main.xml <LinearLayout xmlns:android="http://schemas.a ...

  2. Android设计模式系列-单例模式

    单例模式,可以说是GOF的23种设计模式中最简单的一个. 这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),很有意思,是一个感觉上很干净的模式, ...

  3. Android develop tricks——整理自国外的一些Blog

    ViewDragHelper --视图拖动是一个比較复杂的问题.这个类能够帮助解决不少问题.假设你须要一个样例,DrawerLayout就是利用它实现扫滑.Flavient Laurent 还写了一些 ...

  4. js 如何把JSON格式的字符串转换为JSON对象

    直接用eval函数.例:var str1 = '{ "url": "www.51qdq.com", "name": "js&quo ...

  5. 让DataGridView显示行号

          http://www.cnblogs.com/JuneZhang/archive/2011/11/21/2257630.html 为了表示行号,我们可以在DataGridView的RowP ...

  6. [AngularJS] 'require' prop in Directive or Component

    When use 'require', recommend to add some error check, for example: class ChildCtrl { constructor(){ ...

  7. visual studio 2013 有效序列号

    还没试过,可以参考下! visual studio 2013 有效序列号: BWG7X-J98B3-W34RT-33B3R-JVYW9

  8. OpenCMS integration with Spring MVC--reference

    ref from:http://blogs.indrajitpingale.com/?p=8 http://blog.shinetech.com/2013/04/09/integrating-spri ...

  9. Win7无线网络共享设置方法

    http://jingyan.baidu.com/article/4f34706e89bb2ae387b56d0b.html

  10. NekoHTML and Dom4j

    http://pro.ctlok.com/2010/07/java-read-html-dom4j-nekohtml.html package com.ctlok.pro; import java.i ...