题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
解题思路:
解法一:基于Partition 函数的O(n)算法
解法二:根据数组组特点找出O(n)的算法...
分类:
编程语言 时间:
2015-07-03 09:14:29
阅读次数:
143
题意:有n个桌腿,要砍掉某些桌腿使得剩下的桌腿能支撑桌子。规定剩下的桌腿中长度最大的桌腿的数量如果超过一半即可支撑桌子。砍掉每个桌腿需要付出代价。求最小的代价和。
枚举。假如最后剩下的桌腿的最大长度为lenth,这样长度的桌腿有num个。那么长度大于lenth的桌腿肯定都被砍去了,然后在剩下的桌腿中按照代价从大到小选择num - 1个桌腿留...
分类:
其他好文 时间:
2015-07-01 10:10:58
阅读次数:
270
介绍一种算法,它可以在线性时间和常数空间内,在一个数组内找出出现次数超过一半的某个数字。要解决这个问题并不难,可以使用排序或哈希,但是这两种算法都不能同时满足时间或空间的要求。然而,该算法(A Linear Time Majority Vote Algorithm)却可以在同时满足这两个条件的情况下...
分类:
其他好文 时间:
2015-06-30 20:07:42
阅读次数:
115
一、题目: 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗二、设计思路:和原来的想法一致,用相互抵消的方法。上次是1人超过一半,现在是4人超过1/4,所以对于(n-1)人超过1/n都是可以算的。思想是这....
分类:
其他好文 时间:
2015-06-19 13:17:23
阅读次数:
79
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
思路:
数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历...
分类:
编程语言 时间:
2015-05-26 23:29:03
阅读次数:
285
思路:保存数字中一个值和次数,当遍历到下个数字时,如果和保存数字相同次数加1,否则次数减1,当次数为0,则保存下一个数字,并把次数设为1,因为要找的数字次数超过一半,那么最后一个保存的数字一定就是要找的数字。public class MoreThanHalfNum {
/**
* 需找次数超过一半数字
* @param nums
* @param le...
分类:
编程语言 时间:
2015-05-24 11:38:40
阅读次数:
103
设计思想:首先水王的特点是发帖数超过一半可能比一半多一个或者更多假如水王的帖子和别人的配对那么至少有一个帖子是单着的这就有了规律,先寻找一对挨着的水王的帖子,通过循环遍历数组俩相同让变量k加1不同k减1那么可通过初始化变量sw是1将当前数组元素赋给某一变量i++后当前变量和保存的上一个变量sw相同k...
分类:
其他好文 时间:
2015-05-19 22:16:24
阅读次数:
129
推荐实例扩展【转】7.1、阅读推荐先来看一段文字(摘自36kr):”北京十分科技也非常看好阅读推荐类的应用,他们花了非常大的精力(一年60人团队),才在今天推出了iPhone 版“酷云阅读”。为什么要投入这么多人去做这个阅读应用?CEO 李鹏告诉我,这个团队超过一半的人都在做后台相关的东西,包括语义...
分类:
编程语言 时间:
2015-05-19 14:27:58
阅读次数:
290
1.在数组中寻找出现次数超过一半的一个元素。2.在数组中寻找出现次数超过1/4的三个元素。【思路】1)常规做法:先将数组排序,时间O(nlogn);再遍历一次,统计每个元素出现的次数,得到题目要求。2)时间O(n)的做法:抵消法。对于第一题,每次抵消两个不同的数,剩下的数组主元素出现次数还是超过一半...
分类:
其他好文 时间:
2015-05-14 11:53:12
阅读次数:
121
【题意】:数组中有一个数字出现超过半数以上,找出这个数字。【解析】:一个数字超过半数以上,这是本题仅有的条件,所以,我们要从这个条件入手。数字超过半数有什么特性呢?首先这个数字肯定是这些数的中位数。所以可以排序,然后找中位数。但是时间复杂度为排序的O(n*logn),还可以再快吗?现在有这么一个思路...
分类:
编程语言 时间:
2015-05-13 06:05:28
阅读次数:
141