九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
来源:互联网 发布:软件项目评审报告 编辑:程序博客网 时间:2024/04/24 14:34
题目地址: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;}
本以为主要考的是哈希表才有了第一个程序,谁知却是考的二分查找,呵呵……
1 0
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
- [九度oj]题目1349:数字在排序数组中出现的次数
- 九度oj 1349 数字在排序数组中出现的次数
- 九度OJ-题目1349:数字在排序数组中出现的次数
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- 【Java版本】二分查找&数字在排序数组中出现的次数
- 二分查找——数字在排序数组中出现的次数
- 九度笔记之 1349:数字在排序数组中出现的次数
- 题目1349:数字在排序数组中出现的次数-九度
- 【九度】题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- 九度_题目1349:数字在排序数组中出现的次数
- [九度OnlineJudge][剑指Offer]题目1349:数字在排序数组中出现的次数
- 九度 题目1349:数字在排序数组中出现的次数
- 码农小汪剑指Offer之35-数字在排序数组中出现的次数 暴力 二分查找的运用
- 二分查找解决数组中出现数字的次数
- 隐马尔科夫
- Java内部类和外部类的通信探索
- Drawable资源----图片资源
- Http状态的传递和保存 之 隐藏字段
- 学习笔记六:算法之排序
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- GLSL透视矩阵(C语言)
- Http状态的传递和保存 之 Cookie
- EXCEL中如何根据某列找到重复的行,并将重复只保留一条其余的删除?
- 腾讯拿下大众点评,阿里失守020
- 《实时碰撞检测算法技术》读书笔记(二):轴对齐包围盒(AABB)的计算与更新
- ios沙盒及文件操作
- 高德地图初始化
- 学点Unicode又不会死——Unicode的流言终结者和编码大揭秘