力扣:多数元素

题目

给定一个大小为 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)

相关推荐
复杂网络5 小时前
AI 不睡觉,但它比你更会做实验
算法
贵慜_Derek5 小时前
MAI-04|干净数据在工程上意味着什么:MAI 预训练数据治理
人工智能·算法·llm
vibecoding日记1 天前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr21381 天前
Verilog参数化游程编码RLE模块
算法
望易1 天前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络1 天前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
HjhIron2 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩2 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek