也就是说该数字出现的次数比其他所有数字出现次数的和还要多。因此可以保存两个值,一个数字,一个次数。遍历时1、如果数字相同,count++2、如果count == 0 count = 1 number替换 3、如果不相同 count--int main(){ int array[] = {...
分类:
编程语言 时间:
2015-07-21 23:46:05
阅读次数:
152
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。思路:1、方法1:先排序,然后找中位数;时间复杂度O(nlogn)2、方法2:基于Partition函数...
分类:
编程语言 时间:
2015-07-20 21:11:12
阅读次数:
159
题目大意:有一个司仪,要主持 n 场婚礼,给出婚礼的起始时间和终止时间,每个婚礼需要超过一半的时间做为仪式,并且仪式不能终止。问说司仪能否主持 n 场婚礼。解题思路:贪心,为了尽量主持多的婚礼,每场的仪式时间就一定要尽量短 d = (t - s) / 2 + 1,(因为必须大于一半,所以加 1)。然后按照每场婚礼可以最晚结束的时间排序 t - d,(因为要满足所有的婚礼,所以尽量解决早点的仪式,腾出...
分类:
其他好文 时间:
2015-07-17 22:48:03
阅读次数:
135
回顾东西这个所谓的下一个hundred十亿的市场生态系统虽然安全、行业标准的问题仍难以真正落地,但它无法阻止各大芯片厂商抢占步伐的机会。Machina Research 的数据称,到2020 年。全球估计将会有250 亿部终端联网,当中超过一半都是非手机类终端。不管对于高通这类的芯片厂商。还是海尔、...
分类:
其他好文 时间:
2015-07-13 20:30:02
阅读次数:
130
过程:
int MoreThanHalfNum(int* numbers, int length)
{
if (CheckInvalidArray(numbers, length))
return 0;
int middle = length >> 1;
int start = 0;
int end = length - 1;
int index = Partition(numbe...
分类:
编程语言 时间:
2015-07-09 18:02:10
阅读次数:
136
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为18的数组{1,0,2,6,1,0,1,1,5,2,1,1,1,3,1,1,5,1}, 由于数组中数字1出现的次数超过数组的长度的一半,因此输出1。
1)最直接的办法是先把数组排序,那么超过一半的元素一定是数组最中间的元素。
2)再深入思考一下就会想到快速排序过程,利用partion找出index==...
分类:
编程语言 时间:
2015-07-09 16:10:20
阅读次数:
132
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}, 由于数组中数字2出现了5次,超过数组的长度的一半,因此输出2
一种办法是先把数组排序,那么超过一半的元素一定是数组最中间的元素。
第二种办法比较抽象,设一个变量保存当前值,设一个次数,当前值与下一个值进行比较,如果相等,次数加一,如...
分类:
编程语言 时间:
2015-07-08 13:04:44
阅读次数:
147
题目:数组中一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为 9 的数组{1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2. 这道题很多人都会想到对这个数组进行排序。那么在已排序的数组中,位于中间位置的数字就是超过数...
分类:
编程语言 时间:
2015-07-07 21:14:18
阅读次数:
170
//统计数组中出现次数超过一半的数字
#include
int Find(int *arr, int len)
{
int num = 0; //当前数字
int times = 0; //当前数字出现的次数
int i = 0;
for (i = 0; i<len; i++)
{
if (times == 0)
...
分类:
编程语言 时间:
2015-07-07 17:02:39
阅读次数:
124
题目:数组中有一个数字的次数超过数组长度的一半,请找出这个数字。解法一:基于Partition函数的O(N)算法 1 int partition(vector&num, int low, int high) 2 { 3 int pivot = num[low]; 4 while (l...
分类:
编程语言 时间:
2015-07-04 20:59:57
阅读次数:
172