Gray Code
Source
The gray code is a binary numeral system where two successive values differ
in only one bit.
Given a non-negative integer n representing the total number of bits in the
code, find the sequence of gray code. A gray code sequence must begin with
0 and with cover all 2n integers.
Example
Given n = 2, return [0,1,3,2]. Its gray code sequence is:
00 - 0
01 - 1
11 - 3
10 - 2
Note
For a given n, a gray code sequence is not uniquely defined.
[0,2,3,1] is also a valid gray code sequence according to the above definition.
Challenge
O(2n) time.
Java
public class Solution {
public ArrayList<Integer> grayCode(int n) {
ArrayList<Integer> results = new ArrayList<Integer>();
results.add(0);
for (int i=0; i<n; ++i) {
int flipper = 1<<i;
for (int j=results.size()-1; j>=0; --j) {
results.add(results.get(j) | flipper);
}
}
return results;
}
}