OK, entonces estoy empezando a pensar cómo implementar un nuevo complemento gráfico para Paint.NET y tendré que saber cómo encontrar el número entero más común en una matriz 2D de enteros. ¿Hay una forma integrada en C# para hacer esto? O, ¿Alguien tiene una forma elegante de hacerlo?¿Cómo encontrar la int más común en una matriz de 2d de ints?
La matriz se verá algo como esto:
300 300 300 300 300 300 300
0 150 300 300 300 300 300
0 0 150 300 300 300 300
0 0 0 0 300 300 300
0 0 0 0 150 300 300
0 0 0 0 0 150 300
0 0 0 0 0 0 300
que tendría que saber que 300 es el número más común en la matriz. Si no hay un "más común", simplemente devuelva el número del centro (las disminuciones del conjunto serán siempre impares x impar) 0.
Voy a implementar esto usando un algoritmo de "fuerza bruta" a menos que puedan venir expertos con algo más rápido.
Cualquier ayuda sería muy apreciada.
Gracias!
EDIT: Más información ...
Los valores casi siempre va a ser muy diversa (más diverso que mi ejemplo array). Los valores estarán en el rango de 0-360. El tamaño de la matriz será de 5x5 a aproximadamente 17x17 dependiendo de la velocidad del algoritmo. El resultado se calculará una vez por cada píxel en una imagen grande ... así que más rápido es mejor. ;)
Suena como un problema divertido - Apuesto a que hay una respuesta. Coloréame interesado. – Jeffrey
¿Qué haces si es un empate (por ejemplo, 300 y 125 tienen el mismo conteo de hits)? –
@Michael, se dijo en el problema original: "Si no existe un" más común ", simplemente devuelva el número de centro" lo que significa que ninguna de las soluciones publicadas hasta ahora cumple con los requisitos. – BoltBait