格雷码之间只有一位不同
如
0
0 1
00 01 11 10
(可以看到是由上面的 0 1 翻转 后得到 1 0 再头添加1变成11 10)
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> res = new ArrayList<Integer>();
res.add(0);
int head=1;
for(int i=0 ; i<n ;i++) {
for(int j = res.size()-1 ; j>=0;j--) {
res.add(head + res.get(j));
}
head <<= 1 ;
}
return res;
}
}