C++多数元素
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++多数元素相关的知识,希望对你有一定的参考价值。
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
示例 1:
输入:[3,2,3]
输出:3
示例 2:
输入:[2,2,1,1,1,2,2]
输出:2
投票法
摩尔投票法,投我++,不投–,超过一半以上的人投我,那我稳赢哇
class Solution
public:
int majorityElement(vector<int>& nums)
int count = 1;
int result = nums[0]; // 将第一个数作为候选人
for(int i=1;i<nums.size();++i)
if(result==nums[i])
count++;
else if(result!=nums[i])
count--;
if(count==0)
result=nums[i+1]; // 若count为0,则选下一个数重新作为候选人
//若果这个数出现的次数大于n/2,则最后一定会出现这个数
return result;
;
//时间复杂度O(n)
//空间复杂度O(1)
排序法
class Solution
public:
int majorityElement(vector<int>& nums)
sort(nums.begin(),nums.end());
return(nums[nums.size()/2]); //因为出现频率大于n/2,所以排序后的中间位置必然是众数
;
//时间复杂度O(nlogn)
//空间复杂度O(n)
以上是关于C++多数元素的主要内容,如果未能解决你的问题,请参考以下文章
c++ 使用包含向量的类时 - 候选人需要 2 个参数,提供 0