Descripción del título:
Dada una matriz de tamaño n, encuentre la mayoría de los elementos. La mayoría de los elementos se refieren a elementos que ocurren más de ⌊ n / 2 ⌋ en la matriz.
Puede suponer que la matriz no está vacía, y siempre habrá una mayoría de elementos en una matriz determinada.
Por supuesto: método Hash, ordenar y luego tomar el número medio +1. Es muy simple, pero no es tan
eficiente como el método de votación ~
Echemos un vistazo al método de votación.
class Solution {
public:
//投票法 时间复杂度O(N ) 空间O(1)
int majorityElement(vector<int>& nums) {
int candidate = -1;//候选数
int count =0;//票数
for(auto num : nums)
{
if(num == candidate)
{
++count;//票数+1
}
else
{
--count;//候选数投票相对少1
if(count < 0)
{
candidate = num;//更新候选数
count =1;
}
}
}
return candidate;
}
};