Ordenar colores

Este problema consiste en dado un array con los números: 0, 1, 2. Ordenar el array sin crear uno nuevo tal que todos los ceros queden al principio, los unos en medio y los 2 al final

Solución

# @param {Integer[]} nums
# @return {Void} Do not return anything, modify nums in-place instead.
def sort_colors(nums)
l = nums.length - 1
f = 0
i = 0
while i<= l
    if nums[i]==2
        nums[l], nums[i] = nums[i], nums[l]
        l-=1
    elsif nums[i]==0
        nums[f], nums[i] = nums[i], nums[f]
        f+=1
        i+=1
    else
     i+=1
    end 
end 
    
end

Este programa funciona con tres apuntadores, uno que iterará por todo el array, uno para indicar el principio del array, el cual avanzará cada que se el primero encuentre un cero, pues intercambiarán lugares y significará que desde 0 hasta su posición -1 todos los valores son 0, y el último, el cual cumple la misma función que el segundo pero de manera inversa, para el final del array.