Existen varios algoritmos para hacerlo, pero el más eficiente es el primero de ellos: