腾讯笔试题--微信红包
来源:互联网 发布:动态图修改软件 编辑:程序博客网 时间:2024/05/18 01:49
http://blog.csdn.net/freeelinux/article/details/54810315
本来这题没什么难度,不值得我写博客的,谁知道一个失误花了半小时才做出来。写下来告诫自己不要再犯错。
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。
若没有金额超过总数的一半,返回0。测试样例:
[1,2,3,2,2],5
返回:2
其实就是求超过数组一半的元素问题,剑指offer上有。
方法一:利用partition方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
基于数组的partition方法是成熟的用来求第k位数的方法,在此处我们用来求的是中位数。我们求得中位数,然后判断中位数是否超过数组的一半就得出答案了。
如果求第k个数,while循环条件改为index< k-1(或Index != k-1)即可。
对于每次partition得出的index,如果index>middle,说明中位数在index左边(当前index所对的元素肯定大于中位数)。否则,中位数在index右边。当index=middle时,成功求得中位数,会跳出循环。
这个方法的时间复杂度是O(N)。
另外,千万注意partition中是start,不是0。
方法二:攻守阵地法
我们把第一个元素作为士兵,并使用一个计数变量times。遍历数组,如果出现相同元素,times++。如果出现不同元素,times–。当times减为0时,该士兵死亡。使用新的gifts[i]作为士兵,继续攻守。最后留在战场上的士兵有可能就是超过一半的数字。
最后利用check函数判断即可。
代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
该方法时间复杂度同样是O(N)。
- 腾讯笔试题 微信红包
- 腾讯笔试题--微信红包
- 腾讯笔试题--微信红包
- 微信红包(2016腾讯校招笔试题)
- 2016年腾讯模拟笔试“微信红包”问题
- 腾讯2016笔试题-微信红包-找出数组中过半数的数字
- 笔试题12. 微信红包
- 名企笔试:腾讯2016招聘笔试(微信红包)
- 名企笔试:腾讯2016招聘笔试(微信红包)
- 腾讯-微信红包 腾讯-生成格雷码
- 算法与数据结构——算法题 21:微信红包(2016腾讯校招笔试题) ? 待解决
- 微信红包(腾讯2016研发工程师编程题)
- 腾讯2016研发工程师编程题之微信红包
- 腾讯2016研发工程师编程题(二)----微信红包
- [腾讯校招] 微信红包
- 微信红包-腾讯校招
- 牛客网----2016腾讯,,微信红包
- 牛客网---2016---腾讯微信红包
- JAVA反射(3)
- JAVA反射(4)
- 常用网址
- JDK1.8 动态代理机制及源码解析
- TCP协议以及其报头结构分析
- 腾讯笔试题--微信红包
- 递归删除一个文件夹
- JNI开发流程
- Spring 源码之 BeanDefinition阅读
- SpringMvc的DispatcherServlet和Control的线程安全问题
- DFS、栈、双向队列:CF264A- Escape from Stones
- NGUI 类皇室战争(CR)的滚动列表效果完整实现(四)
- hdu 2962 Trucking(二分+最短路)
- POJ 1020 Anniversary Cake(dfs+分割思想)【转】