栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于摩尔投票

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于摩尔投票

介绍

直奔主题,摩尔投票听起来很高大上,实际上思想很简单:在一个数列集合里,不同的数相互抵消,最后剩下那一个数或者相同的一组数,必定是集合里数量最多的数,如果是:1,2,3,4,5这种互不相同的集合,那么抵消后,集合为空,也就不存在数量最多的数。
所以,摩尔投票的用处概况起来就一句话,找到出现次数最多的那个对象。

实战

从力扣找来的一道例题,大概就是摩尔投票的模板题,大家一定要自己动手做做啊!

数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-majority-element-lcci

在这里,我用major代表元素,count代表元素出现的次数,先一次遍历得到出现次数最多的数,在二次遍历查询出现次数最多那个数的出现次数

class Solution {
    public int majorityElement(int[] nums) {
        int major=0;
        int count=0;
        for(int i=0;i(nums.length/2)?major:-1;
    }
}
结尾

敢于尝试才有机会成功,早上做这道题,我直接用哈希表糊弄过去了,然后看题解,看到了摩尔投票,被算法名给吓到了,以为很难,就直接关闭了网页,草草了之。晚上心血来潮,仔细一看,真的白给,不到3分钟就理解了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号