跳转至

2022/01/08 - 89. 格雷编码

89. 格雷编码 - Medium

大家可以参考维基百科或者百度百科上对格雷码的解释。

通过对格雷码的认识,我们可以看出来n次格雷码是可以从n-1次格雷码推导出来。

Description

89. 格雷编码

n 位格雷码序列 是一个由 2^n 个整数组成的序列,其中:

  • 每个整数都在范围 [0, 2n - 1] 内(含 02n - 1
  • 第一个整数是 0
  • 一个整数在序列中出现不超过一次
  • 每对 相邻 整数的二进制表示恰好一位不同 ,且
  • 第一个最后一个整数的二进制表示恰好一位不同

给你一个整数 n ,返回任一有效的n位格雷码序列

Solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Solution {
    public List<Integer> grayCode(int n) {
        List<Integer> res = new ArrayList<>();
        res.add(0);
        int c = 1;
        for (int i = 0; i < n; i++) {
            int len = res.size();
            for (int j = len - 1; j >= 0; j--) {
               res.add(c + res.get(j));
            }
            c <<= 1;
        }
        return res;
    }
}

评论

回到页面顶部