采用二分查找的方法,一旦找到,left++,right--,--middle++,扩展查找。开始while(left data ,int k) { 4 int n=data.size(); 5 if(n=0){20 right-...
分类:
编程语言 时间:
2015-09-02 00:15:43
阅读次数:
229
题目:统计一个数字在排序数组中出现的次数。思路:采用二分查找,找到该数字在数组中第一次出现的位置,然后再找到组后一个出现的位置。两者做减法运算再加1.Java代码://数字K在排序数组中出现的次数//思路:用二分查找,找到第一个k和最后一个Kpublic class NumberCount { .....
分类:
编程语言 时间:
2015-08-29 11:08:17
阅读次数:
133
题目
统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输入4.
思路
首先第一种思路,必然是遍历数组,然后定义累加器,但是这种时间复杂度为O(n)
我们注意到数组是排序的,我们可以利用而分查找的特点,首先将第一个3找到,然后找出最后一个3,相减即可。
代码
public static in...
分类:
编程语言 时间:
2015-08-20 01:35:05
阅读次数:
149
题目:统计一个数字在排序数组中出现的次数。思路:对二分查找进行改进,找到数字在数组中第一次出现和最后一次出现的位置,这样就得到它出现的次数。以找第一次出现的位置为例:如果mid元素大于k,则在前半段找;如果小于k,则在后半段找;如果等于k,则要看mid的前一个元素是不是k,如果是,则在前半段找,如果...
分类:
编程语言 时间:
2015-08-18 01:01:51
阅读次数:
185
题目描述
统计一个数字在排序数组中出现的次数。
解题思路
数组是排序的,所以重复出现的数字是相邻排列的。
用二分查找算法,找到第一次出现的位置,和 最后一次出现的位置。
判断第一次出现的位置条件为:当前数字的前一个是否与之相等,若是则继续查找,否则该位置就是第一次出现的位置。
判断最后一次出现的位置条件为:当前数字的后一个是否与之相等,若是则继续查找,否则该位置就是最后一次出现的位置。...
分类:
编程语言 时间:
2015-08-03 01:17:16
阅读次数:
173
题目描述:
统计一个数字在排序数组中出现的次数。
如输入排序数组 {1,2,3,3,3,3,4,5} 和数字3,由于 3 在数组中出现了 4 次,因此输出 4.解析:
在有序数组中查找一个数可以联想到二分查找。
如例子中,要查找3的次数,二分查找,找到3后,它的左右两边可能都有3,因此两边都要查找,如果3在数组中出现了n次,则时间复杂度O(n),二分查找没有起到作用。假设我们要在数组中查找...
分类:
编程语言 时间:
2015-07-29 15:54:46
阅读次数:
159
题目:统计一个数字在排序数组中出现的次数。思路:1、顺序遍历顺序扫描一遍数组,统计该数字出现的次数。时间复杂度:O(n)2、二分查找假设我们需要找的数字是k,那么就需要找到数组中的第一个k和最后一个k出现的位置。如何通过二分查找得到第一个k的位置呢?取数组中间的数字与k作比较,如果该数字比k大,那么...
分类:
编程语言 时间:
2015-07-26 18:56:48
阅读次数:
142
// 题目:统计一个数字在排序数组中出现的次数。
// 例如:排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4
有一种最简单的算法,遍历。但是有比它效率更高的
先看遍历:
#include
#include
int num_time(int *arr, int len, int a)
{
int i = 0;...
分类:
编程语言 时间:
2015-07-14 20:32:04
阅读次数:
267
思路: 利用二分查找,分别查找待统计数字的头和尾的下标,最后做差加一即为结果。C++: 1 #include 2 #include 3 using namespace std; 4 5 int GetFirstK(vector& nums, int startpos, int endpos,...
分类:
编程语言 时间:
2015-07-12 17:24:20
阅读次数:
146
半段查找。
int GetFirstK(int* data, int length, int k, int start, int end)
{
if (start > end)
return -1;
int middleIndex = (start + end) / 2;
int middleData = data[middleIndex];
if (middleData == k)...
分类:
编程语言 时间:
2015-07-10 22:24:50
阅读次数:
178