给定一个大小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 =
寻找数组中的多数元素

给定一个非空数组,多数元素是指出现次数大于数组长度一半的元素。文章介绍了多种解法,包括排序、哈希表、随机数法以及时间复杂度为O(n)的空间复杂度为O(1)的方法。
最低0.47元/天 解锁文章
681

被折叠的 条评论
为什么被折叠?



