当前位置: 首页 > news >正文

力扣:多数元素

题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例

示例 1:
输入:nums = [3,2,3]
输出:3

示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2

题解

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)

相关文章:

  • 【C/C++】RPC与线程间通信:高效设计的关键选择
  • 香港国际交易节奏解析:结构性波动背后的信号逻辑
  • 【软件设计师:数据库】13.数据库控制与安全
  • 关于多版本CUDA共存的研究,是否能一台机子装两个CUDA 版本并正常切换使用
  • Vue2:引入公共JS,通过this调用
  • 前端基础之《Vue(15)—组件通信(2)》
  • 【漫话机器学习系列】247.当 N=整个母体(WHEN N=POPULATION)
  • vue2 两种路由跳转方式
  • 网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
  • 信息学奥赛一本通 1511:【SCOI2011】糖果 | 洛谷 P3275 [SCOI2011] 糖果
  • 单片机嵌入式滤波算法库
  • 3.2.3 掌握RDD转换算子 - 5. 合并算子 - union()
  • 人工智能可信度新突破:MIT改进共形分类助力高风险医学诊断
  • AI领域的MCP(Model-Centric Paradigm)
  • vue 中如何使用region?
  • 一、Redis快速入门
  • 《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
  • 关于Bearer Token
  • IBM BAW(原BPM升级版)使用教程第五讲
  • k8s术语之Horizontal Pod Autoscaling
  • 西南大学教授、重庆健美运动奠基人之一李启圣逝世
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 首批证券公司科创债来了!拟发行规模超160亿元
  • 一企业采购国产化肥冒充“挪威化肥”:7人被抓获
  • 中美“第二阶段”贸易协定是否会在会谈中提出?商务部回应
  • 优化网络营商环境,上海严厉打击涉企网络谣言、黑灰产等违法犯罪