思路:应该是用二分查找分别找到该数字第一次和最后一次出现的位置,相减即可。O(logn)int findLeft(int a[], int n, int num){ int l = 0, r = n - 1; while(l = 0 && a[l] == num) //找左边界 ...
分类:
编程语言 时间:
2015-07-08 22:10:48
阅读次数:
161
//数字在排序数组中出现的次数。
//统计一个数字在排序数组中出现的次数。例如:排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4.
#include
int One_Num_Times(int *arr, int len, int num)
{
int i = 0;
int times = 0;
for (i = 0; i < len;i++,arr++)...
分类:
编程语言 时间:
2015-07-07 17:03:07
阅读次数:
130
//数字在排序数组中出现的次数(修改)
//统计一个数字在排序数组中出现的次数。例如:排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4.
#include
int One_Num_Times(int *arr, int len, int num)
{
int i = 0;
int times = 0;
for (i = 0; i =*arr;i++,arr+...
分类:
编程语言 时间:
2015-07-07 16:55:16
阅读次数:
167
题目:统计一个数字:在排序数组中出现的次数。举例说明例如输入排序数组{ 1, 2, 3, 3, 3, 3, 4, 5}和数字3 ,由于3 在这个数组中出现了4 次,因此输出4 。解题思路 利用改进的二分算法。
如何用二分查找算法在数组中找到第一个k,二分查找算法总是先拿数组中间的数字和k作比较。如果中间的数字比k大,那么k只有可能出现在数组的前半段,下一轮我们只在数组的前半段查找就可以了。...
分类:
编程语言 时间:
2015-07-06 12:26:35
阅读次数:
190
题目:
统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3由于3在这个数组中出现了4次,因此输出4。
题目解法很多,关键是要找到让人满意的方法,直接统计当然可以,可是显然不是我们要的答案。比较好的思路如下:
使用二分查找的拓展,当查找的元素有重复的时,找到元素的第一个和最后一个。这样将可以计算出该元素有多少个重复的了。二分法在数组中查找一个合乎要...
分类:
编程语言 时间:
2015-06-04 22:49:59
阅读次数:
184
原题链接:http://ac.jobdu.com/problem.php?pid=1349二分。。 1 #include 2 #include 3 #include 4 #include 5 using std::lower_bound; 6 using std::upper_bound; 7 co...
分类:
编程语言 时间:
2015-05-27 13:44:30
阅读次数:
208
题目:
统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.
解法一:O(n)
顺序遍历
解法二:O(logn)
用二分查找,分别找出第一个3,和最后一个3的位置,然后计算个数。
#include
int GetFirstK(int* data,int length,int k,i...
分类:
编程语言 时间:
2015-05-02 23:26:23
阅读次数:
172
题目描述:统计一个数字在排序数组中出现的次数。
输入:
每个测试案例包括两行:
第一行有1个整数n,表示数组的大小。1
第二行有n个整数,表示数组元素,每个元素均为int。
第三行有1个整数m,表示接下来有m次查询。1
下面有m行,每行有一个整数k,表示要查询的数。
输出:
对应每个测试案例,有m行输出,每行1整数,表示数组中该数字出现的次数。
样例输入:...
分类:
编程语言 时间:
2015-04-01 23:48:46
阅读次数:
202
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5},由于3在这个数组中出现了4次,因此输出4.分析:直接方法,顺序扫描数组得到出现次数。时间复杂度为O(n)。更快的方法,由于数组有序,可以用二分法得到第一个3和最后一个3的位置,就确定了出现多..
分类:
编程语言 时间:
2014-12-09 10:42:11
阅读次数:
177
题目:统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于在这个数组中出现了4次,因此输出4.使用二分查找,基本思想:先查找该数字第一次出现的位置,然后查找该数字最后一次出现的位置.代码如下: 1 #include 2 #include 3...
分类:
编程语言 时间:
2014-10-31 11:33:19
阅读次数:
259