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; } |