选择绝对众数
来源:互联网 发布:租车app源码 编辑:程序博客网 时间:2024/05/18 01:21
绝对众数的概念表示序列中的唯一众数,且出现的次数大于
实际上在序列中如果某个数的出现次数超过该序列长度的一半,那么该数一定是唯一的众数。
解决这个问题的办法有多:
1.排序,时间复杂度为
2.使用hash,时间复杂度可以降低到
有更好的办法,
从人的角度来看待这个问题,可以这样来做:从序列中,每次挑选两个不一样的数,从序列中删除,剩下最后的数一定是绝对众数。
比如说序列 [1 2 5 3 3 3 3]
删掉(1,2)
删掉(5,3)
剩下的都是相同的为所求。
根据这个思路,可以这样做。
1、对于计算机来说,它只能从头到尾对数组进行遍历,没有办法去挑两两不同的元素,为了模拟上述过程,我们定义一个count和一个表示当前可能成为“多数派”的元素candidate。
2、.在一次扫描中,如果元素和当前candidate相同则count++,不同则count-–,表示删除一对两两不同元素,当count减为0时,我们就需要更新我们的candidate了。
代码
class Solution {public: int majorityElement(vector<int>& nums) { int count=0; int candidates=nums[0]; int size=nums.size(); for(int i=0;i<size;++i) { if(count==0) { candidates=nums[i]; count=1; } else { if(candidates==nums[i]) { ++count; } else { --count; } } } return candidates; }};
1 0
- 选择绝对众数
- 绝对众数
- 算法之绝对众数
- 求绝对众数
- 绝对众数的求法
- 算法学习-绝对众数
- 求绝对众数
- 【LeetCode】寻找众数(绝对众数、1/k众数)
- 众数
- 众数
- 众数
- 众数
- 众数
- 众数
- 众数
- 众数
- Node.js之绝对选择
- Node.js之绝对选择
- php面向对象之构造方法__construct()
- Android双屏异显的实现
- RPC熔断降级
- 文本选择及操作
- NoSQL- redis简单介绍
- 选择绝对众数
- toolbar的一些属性说明
- Maven相关
- MySQL 数据库的常用指令和基本操作
- Redis常用命令(1)——Key
- c# 数据库连接之实现
- 51nod 1394 差和问题
- 对.lds连接脚本文件的分析
- 筛选号码