给定一个大小n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于【n/2】的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例1:
输入:[3,2,3]
输出:3。
示例2:
输入:[2,2,1,1,1,2,2]
输出:2
说明:
本题题目中没有给出数据范围,但最简单的暴力方法(即枚举数组中的每个元素,再遍历一遍数组统计其中出现的次数)。会超出其时间复杂度小于O(n^2)的算法。
解法一:
先对数组进行排序,返回排好序的下标为vec.size()/2
对应的元素。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int FindNum(vector<int>& vec)
{
sort(vec.begin(), vec.end());
return vec[vec.size() / 2];
}
int main()
{
vector<int> vec = {
3,2,3,3,2,2,2,2,2,2,2 };
int m