Categorías
Algorithms

LeetCode – Código Gray (Java)

El código gris es un sistema numérico binario en el que dos valores sucesivos difieren en un solo bit.

Dado un número entero no negativo n que representa el número total de bits en el código, imprima la secuencia del código gris. Una secuencia de código gris debe comenzar con 0.

Por ejemplo, dado n = 2, devuelve [0,1,3,2]. Su secuencia de código gris es:

00 - 0
01 - 1
11 - 3
10 - 2

Solución Java

public List<Integer> grayCode(int n) {
    if(n==0){
        List<Integer> result = new ArrayList<Integer>();
        result.add(0);
        return result;
    }
 
    List<Integer> result = grayCode(n-1);
    int numToAdd = 1<<(n-1);
 
    for(int i=result.size()-1; i>=0; i--){ //iterate from last to first
        result.add(numToAdd+result.get(i));
    }
 
    return result;
}

  LeetCode - Atrapando agua de lluvia (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *