数组中出现次数超过一半的数字
来源:互联网 发布:网络机顶盒怎么看电视 编辑:程序博客网 时间:2024/06/05 02:37
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
1.使用排序算法,将整个数组排序,然后中间的数字就是出现次数超过一半的数字。时间复杂度为O(nlogn)。
2.数组中有个数字出现的次数超过了数组长度的一半。也就是说,有个数字出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1。如果下一个数字和我们之前保存的数字不同,则次数减1。如果次数为零,我们需要保存下一个数字,并把次数设为1。由于我们要找的数字出现的次数比其他所有数字出现的次数之和还要多,那么要找的数字肯定是最后一次把次数设为1时对应的数字。时间复杂度为O(n)。
3.每次删除两个不相同的数,直到不能删除为止。由于某个数出现次数超过一半,那么最后剩下的必然是这个数。
0 0
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 寻找数组中出现次数超过一半的数字
- 面试训练数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 异常的应用实例
- lua之table
- 简单易学的机器学习算法——岭回归(Ridge Regression)
- UVa 208 - Firetruck(DFS判连通+回溯)
- IMAC键盘和鼠标部分功能键失效原因
- 数组中出现次数超过一半的数字
- 转一篇vim配置python环境的文章
- 脚本学习 sed awk 写 pidfind 从 ps -x 找到进程名的pid
- 从微信的成功看移动AppUI设计的精髓
- 在网上搜代码, 搜到了个卡带机的效果, 做的很好, 我改成beyond的歌曲
- POJ--1787--Charlie's Change--背包变形
- 《全球购》King Henry's开心果,全世界舌尖上的零食
- netty5.0之server端NioServerSocketChannel的init和register流程
- 13.lua学习笔记:模块与包