不难。就是比如到了[0, 1, 3, 2]时,下一组就要[4+2, 3+2, 1+2, 0+2]。但是当时没有做到ans.add(0)一开始初始化(而是只放在n==0的判断block内了),所以runtime error了。看了半天看出来了。
public class Solution {
public ArrayList<Integer> grayCode(int n) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<Integer> ans = new ArrayList<Integer>();
ans.add(0);
if (n == 0) {
return ans;
}
for (int i = 0; i < n; i++) {
int m = (int)Math.pow(2, i);
for (int j = m - 1; j >=0; j--) {
ans.add(ans.get(j) + m);
}
}
return ans;
}
}