Necesita crear un BST con un campo de conteo.
Para encontrar el elemento mayoritario, debe crear el BST utilizando elementos de matriz. Supongamos que la matriz es [3 2 2 2 4 2]
luego primero cree la raíz de BST con el valor 3 (cuenta = 1)
A continuación, agregue 2 como hijo izquierdo (con cuenta = 1)
Ahora intente agregar 2 nuevamente, pero vemos que ya hay un nodo con valor = 2, así que simplemente incremente la cuenta a 2.
Continuando de esta manera, se creará el siguiente árbol:
3 (1)
2 (4) 4 (1)
El valor entre paréntesis indica el recuento del valor.
Para verificar la mayoría, mientras crea el BST, verifique que el recuento del nodo actual sea> n / 2. Si es así, entonces es el elemento mayoritario.
Si la creación de BST se completa con todos los elementos de la matriz, significa que no se encontró ningún elemento mayoritario.
Para esta solución, la complejidad del tiempo es O (n log n) si se crea un BST equilibrado, donde n – número de elementos en la matriz, y la complejidad del espacio es O (n) porque estamos usando espacio adicional para crear el BST.
Espero que esta explicación ayude.
- Sigo fallando las entrevistas de programación para pasantías de ingeniería de software. ¿Qué tengo que hacer?
- ¿Qué se puede aprender de entrevistar candidatos?
- ¿Son los mismos problemas: encontrar la subsecuencia común más larga de las cadenas originales e invertidas, y encontrar la subsecuencia palindrómica más larga? Si no, ¿cuál es un buen contraejemplo con el que entender?
- Si mi currículum es débil, ¿qué puedo tener en mi cuenta de GitHub para ser contratado como desarrollador de software básico?
- Cómo verificar la capacidad de una persona sobre las habilidades de ASP.NET
Puede ver métodos más eficientes y fáciles de entender para resolver este problema en este video: