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++多数元素的主要内容,如果未能解决你的问题,请参考以下文章

css权威指南--笔记

c++ 使用包含向量的类时 - 候选人需要 2 个参数,提供 0

mapreduce C++ lambda:候选不可行的单个参数

C++11 现代C++风格的新元素--简介

数据库利用闭包求关系模式的候选码

在做技术面试官时,我是这样甄别大忽悠的——如果面试时你有这样的表现,估计悬