Sword se refiere a la serie Offer Sword se refiere a Offer 39: el número que aparece más de la mitad del número en la matriz

Descripción del Título:

Hay un número en la matriz que aparece más de la mitad de la longitud de la matriz. Averigüe este número.

Puede asumir que la matriz no está vacía y que siempre habrá una mayoría de elementos en una matriz determinada.

Ejemplo:

输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

Ideas de resolución de problemas:

Cree una nueva matriz de mapas, luego recorra toda la matriz de vectores y luego almacénela en la matriz de mapas por valor de clave. Si el valor de vextor es el mismo, la clave de la matriz de mapas correspondiente es la misma, entonces el valor más uno , es decir, el número más uno.

Finalmente, recorra el segundo en la matriz del mapa, que es el número de cada número en el vexctor.

Cuando el segundo valor es mayor que la mitad de la longitud de la matriz de vectores, regresa.

Código:

class Solution {
public:
    int majorityElement(vector<int>& nums) {
         map<int,int> q;
        for(auto x:nums)
        {
            q[x]++;
        }
        for(auto y:q)
        {
            if(y.second > nums.size()/2)
            return y.first;
        }
        return 0;
    }
};

 

Supongo que te gusta

Origin blog.csdn.net/qq_46423166/article/details/110916609
Recomendado
Clasificación