大致思路:分析结果可知,将0和1添加到列表中,每次从后往前遍历,将遍历到的数最前面加一个位添加到列表中即可。
public class Solution {
public ArrayList<Integer> grayCode (int n) {
ArrayList<Integer> res = new ArrayList<>();
if(n==0) {
res.add(0);
return res;
}
res.add(0);res.add(1);
int tmp = 2;
for(int i = 1;i<n;i++){
int len = res.size();
for(int j = len-1;j>=0;j--){
res.add(res.get(j)+tmp);
}
tmp *=2;
}
return res;
}
}