新闻详情

新闻详情

首页 / 资讯中心 / 详情

【分治-1】169.多数元素

发布时间:2026/10/1 16:13:48来源:尧图网络
【分治-1】169.多数元素
题目描述给定一个大小为n的数组nums返回其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的并且给定的数组总是存在多数元素。示例 1输入nums [3,2,3]输出3示例 2输入nums [2,2,1,1,1,2,2]输出2解题思路方法一Boyer-Moore 投票算法(最优解)核心思路把多数元素看作正票其他元素看作负票。多数元素出现次数 n/2所以正票总数 负票总数。算法维护一个candidate和count遍历数组如果count 0把当前元素设为candidatecount 1如果当前元素 candidatecount否则count--最后candidate就是多数元素核心直觉多数元素的数量比其他所有元素加起来还多所以两两抵消后剩下的一定是多数元素。具体过程示例nums [2, 2, 1, 1, 1, 2, 2]inums[i]candidatecount说明0221count0设 candidate21222相同count2121不同count--3120不同count--4111count0设 candidate15210不同count--6221count0设 candidate2结果2✅代码实现class Solution { public: int majorityElement(vectorint nums) { int candidate 0; int count 0; for (int num : nums) { if (count 0) { candidate num; count 1; } else if (num candidate) { count; } else { count--; } } return candidate; } };更简洁的写法class Solution { public: int majorityElement(vectorint nums) { int candidate 0, count 0; for (int num : nums) { if (count 0) candidate num; count (num candidate) ? 1 : -1; } return candidate; } };复杂度分析维度复杂度说明时间复杂度O(n)一次遍历空间复杂度O(1)只用两个变量关键细节1. 为什么投票算法能工作核心证明设多数元素为m出现次数为c其他元素总数为n - c因为c n/2所以c n - c每次抵消一对不同的元素最多抵消n - c对剩下c - (n - c) 0个m所以最后的candidate一定是m2. 为什么不需要验证candidate题目保证一定存在多数元素所以投票算法的结果一定是正确的。如果题目不保证存在多数元素就需要再遍历一次验证candidate的出现次数是否 n/2。3. 和「求众数 II」的区别题目区别169. 多数元素出现次数 n/2最多一个229. 求众数 II出现次数 n/3最多两个229 题需要用两个候选人和两个计数器。方法二哈希表O(n) 空间代码实现class Solution { public: int majorityElement(vectorint nums) { unordered_mapint, int count; int n nums.size(); for (int num : nums) { if (count[num] n / 2) { return num; } } return -1; } };复杂度时间 O(n)空间 O(n)方法三排序O(n log n)代码实现class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(), nums.end()); return nums[nums.size() / 2]; } };原理排序后多数元素一定在中间位置。复杂度时间 O(n log n)空间 O(1)或 O(log n) 递归栈方法四分治O(n log n)代码实现class Solution { public: int majorityElement(vectorint nums) { return divide(nums, 0, nums.size() - 1); } private: int divide(vectorint nums, int left, int right) { if (left right) return nums[left]; int mid left (right - left) / 2; int leftMajor divide(nums, left, mid); int rightMajor divide(nums, mid 1, right); if (leftMajor rightMajor) return leftMajor; int leftCount countInRange(nums, leftMajor, left, right); int rightCount countInRange(nums, rightMajor, left, right); return (leftCount rightCount) ? leftMajor : rightMajor; } int countInRange(vectorint nums, int target, int left, int right) { int count 0; for (int i left; i right; i) { if (nums[i] target) count; } return count; } };复杂度时间 O(n log n)空间 O(log n)四种方法对比方法时间复杂度空间复杂度推荐度Boyer-Moore 投票O(n)O(1)⭐⭐⭐⭐⭐哈希表O(n)O(n)⭐⭐⭐⭐排序O(n log n)O(1)⭐⭐⭐分治O(n log n)O(log n)⭐⭐⭐总结要点说明核心思想投票算法多数元素正票多于负票关键操作count 0时换候选人相同加一不同减一时间复杂度O(n)空间复杂度O(1)
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Ever Gauzy MCP Server 桌面应用指南:在 Electron 中托管与监控 Model Context Protocol 服务 2026/10/1 16:13:42

Ever Gauzy MCP Server 桌面应用指南:在 Electron 中托管与监控 Model Context Protocol 服务

后端前端企业应用MCP 服务 【免费下载链接】ever-gauzy Ever Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co 项目地址: https://gitcode.com/GitHub_Trending/ev/ever-gauzy 点击查看 免费下载 本指南围绕 Ever Gauzy 仓库…

阅读更多 →
​实测:PPL 一字不差,256K 真能把针捞出来(4/5)​编辑​ 2026/10/1 16:13:42

​实测:PPL 一字不差,256K 真能把针捞出来(4/5)​编辑​

系列文章:12G 显存跑 256K 上下文。 这一篇全是数据。三组证据:质量零回退、A/B 对照证明检索有效、256K 端到端跑通。 一、质量:PPL 回归测试,62/62,delta 0 我的底线是"不为速度牺牲质量"。所以第一个要…

阅读更多 →
一氧化碳气体检测仪在户外露营场景的应用 2026/10/1 16:13:42

一氧化碳气体检测仪在户外露营场景的应用

一氧化碳(CO)是无色、无味、无嗅的剧毒气体,空气中浓度达到 50 ppm(parts per million,百万分之一浓度单位)持续 8 小时即可引发头痛,浓度超过 800 ppm 可在 45 分钟内导致意识丧失。户外露营场…

阅读更多 →
绿色矿山新国标落地:无人驾驶矿卡拿到“国家认证“,百亿赛道等来发令枪 2026/10/1 16:13:36

绿色矿山新国标落地:无人驾驶矿卡拿到“国家认证“,百亿赛道等来发令枪

知行产研:矿山无人驾驶产业观察第一平台。关注无人矿卡/重卡产业创新,点击上图查看本专题更多优质内容。 9月11日,2026中国国际矿业大会上,自然资源部与国家市场监督管理总局联合官宣:《绿色矿山建设规范》系列国家标…

阅读更多 →
AIHOT部署完全指南:Docker Compose、域名HTTPS、中国大陆加速与自动备份 2026/10/1 16:13:35

AIHOT部署完全指南:Docker Compose、域名HTTPS、中国大陆加速与自动备份

AIHOT部署完全指南:Docker Compose、域名HTTPS、中国大陆加速与自动备份 【免费下载链接】AIHOT 一个自己找热点、自己写日报的网站框架。把信源和精选标准换成你的,它就是你的行业热点站。 项目地址: https://gitcode.com/gh_mirrors/ai/AIHOT 本…

阅读更多 →
GEO优化产品描述服务实力参考:独立站GEO优化靠谱商家测评排名 2026/10/1 16:13:35

GEO优化产品描述服务实力参考:独立站GEO优化靠谱商家测评排名

苏州聚合增长信息科技有限公司是国内专注于制造业、机械、电子元器件等行业的GEO优化服务提供商,为企业提供聚合AI GEO国内版与国际版代运营服务,通过生成式引擎优化与智能体技术融合,帮助企业解决AI搜索时代的获客痛点,实现从品牌…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉