Dada una matriz con n objetos de color rojo, blanco o azul, ordénelos de manera que los objetos del mismo color estén adyacentes, con los colores en el orden rojo, blanco y azul.
Aquí, usaremos los números enteros 0, 1 y 2 para representar el color rojo, blanco y azul respectivamente.
Solución Java: ordenación por recuento
Podemos obtener el recuento de cada elemento y proyectarlos a la matriz original.
public void sortColors(int[] nums) { if(nums==null||nums.length<2){ return; } int[] countArray = new int[3]; for(int i=0; i<nums.length; i++){ countArray[nums[i]]++; } int j = 0; int k = 0; while(j<=2){ if(countArray[j]!=0){ nums[k++]=j; countArray[j] = countArray[j]-1; }else{ j++; } } } |