力扣:多数元素

题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例

示例 1:

输入:nums = 3,2,3

输出:3

示例 2:

输入:nums = 2,2,1,1,1,2,2

输出:2

题解

java 复制代码
public static int majorityElement(int[] nums) {
   int count = 1;
    int candidate = nums[0];
    for (int i = 1; i < nums.length; i++) {
//            if (candidate == nums[i]) {
//                count++;
//            } else{
//                count--;
//            }
        count += candidate == nums[i] ? 1 : -1;
        if (count == 0) {
            candidate = nums[i];
            count = 1;
        }
    }
    return candidate;
}

可以将数组中不同的数都看成不同的团体(例如nums=2,1,2,数组中有两种不同的数,就可以看成有两个团体)

每个团体都可以吸收符合自己团体的小弟(遇到相同的数),也可以派出自己的小弟去干掉不属于自己团队的其他团队的成员(遇到不同的数)。当吸收一个小弟时,团体人数就加一,当派出一个小弟时,团体人数就减一。

就这样遍历一遍数组,相当于每个让所有团队在一起打群架,每个成员的战力是相同的,每个成员都会他其他团队成员进行1v1男人大战最终同归于尽,最后还活着的团队就是人数最多的团队,也就是我们要找的众数。

时间复杂度:O(n)

空间复杂度:O(1)

相关推荐
IMPYLH1 分钟前
HTML 的 <abbr> 元素
前端·算法·html
leo__52011 分钟前
小波特征与模糊支持向量机(FSVM)的脑电信号分类方法
算法·支持向量机·分类
wabs66615 分钟前
关于动态规划【纯粹的0-1背包需要思考的问题】
算法·动态规划
小小编程路17 分钟前
字符串转数字时,可能会遇到哪些问题?
java·开发语言·算法
rit843249932 分钟前
MATLAB近红外光谱预处理:平滑与求导(MSV方法)
数据结构·算法·matlab
蚂蚁数据AntData37 分钟前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
_日拱一卒38 分钟前
LeetCode:22括号生成
算法·leetcode·职场和发展
cfm_291439 分钟前
JVM垃圾收集算法与收集器深度解析
jvm·测试工具·算法·性能优化
郝学胜_神的一滴1 小时前
干货版《算法导论》09:让哈希表稳如泰山的终极解法
数据结构·算法
CC数学建模1 小时前
2026年第十六届APMCM 亚太地区大学生数学建模竞赛(中文赛项)赛题C题:创业社区规划与资源配置优化问题完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模