Q: Dado un rojo, blanco y azul, un total de n elementos de la matriz, los ordena in situ, de tal manera que los elementos adyacentes con el mismo color, y ordenados por el rojo blanco, orden, azul.
Esta pregunta, usamos enteros 0, 1 y 2 representan los colores rojo, blanco y azul.
[Ejemplo]
de entrada: [2, 0, 2, 1, 1, 0]
Salida: [0, 0, 1, 1, 2, 2]
[Nota]
no se puede utilizar la base de código de función de clasificación para resolver esta cuestión.
A:
se utiliza la secuenciación en el presente documento a contar. Puede ser visto: https://www.cnblogs.com/bqwzx/p/11029264.html
proporcionado un mapa, clave 0,1,2 respectivamente, el número de registros, y por el número de salidas (en este caso por int [] implementado, me encontrar un mapa demasiados problemas ......)
public static void sortColors(int[] num) {
int[] color = new int[3];
if (num == null || num.length == 0)
return;
for (int i = 0; i < num.length; i++) {
color[num[i]]++;
}
for (int i = 0; i < num.length; ) {
for (int j = 0; j < 3; j++) {
while (color[j]-- != 0) {
num[i++] = j;
}
}
}
}