2026/6/11 6:58:11
网站建设
项目流程
做网站需要学那几个软件,雄安建设网站制作,炫酷手机网站模板,cdr可以做网站页面吗题目介绍
给定一个大小为 n 的数组 nums #xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的#xff0c;并且给定的数组总是存在多数元素。 提示#xff1a;
n nums.length1 n 5 * 104-109 n…题目介绍给定一个大小为n的数组nums返回其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的并且给定的数组总是存在多数元素。提示n nums.length1 n 5 * 104-109 nums[i] 109输入保证数组中一定有一个多数元素。进阶尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。class Solution { public: int majorityElement(vectorint nums) { } };全文1500字阅读思考 9min原题链接169. 多数元素 - 力扣LeetCode解析1 . 本题需求也很明确给你一个数组。要求你返回数组中出现次数大于 size/2的元素值2 . “统计数组中元素的出现个数” —— mp哈希方法统计3 . 难道统计完再来遍历一遍查看当前元素的出现次数判断是否大于size/2 ?class Solution { public: int majorityElement(vectorint nums) { mapint,int mp; for(auto e:nums) { mp[e]; if(mp[e] nums.size()/2) return e; } for(auto e:nums) { if(mp[e] nums.size() / 2) return e; } return 0; } };4 . 这种方法可行吗当然可以。5 . 只是这种方法不能很好体现“算法”二字——精妙6 . 能否只需要统计次数一遍后就能立刻返回出现次数超过size/2的元素a . 我们之所以会在统计完所有元素的出现次数不够后再去范围for遍历一遍查询mp[e]b . 是因为元素的乱序导致我们无法一次性统计出某个元素的出现次数c . 是的如果我们能让相同的元素排在一起让mp不断统计d . 我们总是会统计完当前一个元素所有出现的次数再去统计下一个数字e . 这样我们就可以实现一边数出现次数一边判断是否大于nums.size() / 27 . 对数组先排序就能达成如此效果代码已经跃然纸上class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(),nums.end()); mapint,int mp; for(auto e:nums) { mp[e]; if(mp[e] nums.size()/2) return e; } return 0; } };再优化1 . 排完序后如果某个元素次数真的超过一半2 . 你想这个数组的布局如何注不妨就假设两种极端情况1 . 一定存在一个超过size/2的元素2 . 极端情况这一个数全部堆积在最左侧这一个数全部堆积在最右侧3 . 这还只是极端情况4 . 可是它们一定会占用nums[size / 2]5 . 而不极端的情况红色框整体往中间挪必然也会占用nums[size/2]这个格子3 . 所以直接返回nums[size/2]的元素值一定是该数组中出现次数超过一半的元素4 . 对了一半首先得把相同的聚在一起——所以前提一定是排好序代码也呼之欲出class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(),nums.end()); return nums[nums.size()/2]; } };总结以及完整参考代码class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(),nums.end()); mapint,int mp; for(auto e:nums) { mp[e]; if(mp[e] nums.size()/2) return e; } return 0; } };class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(),nums.end()); return nums[nums.size()/2]; } };本周算法清单15 . 有效的括号-CSDN博客16 . 买卖股票的最佳时机-CSDN博客17 . 爬楼梯-CSDN博客18 . 杨辉三角-CSDN博客19 . 只出现一次的数字-CSDN博客赶快动起手来吧终于本周算法更新完毕请沉浸式享用我们下周再见