Leetcode 89. Gray Code

Posted zhangwj0101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 89. Gray Code相关的知识,希望对你有一定的参考价值。

Question

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, print the sequence of gray code. A gray code sequence must begin with 0.

For 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.

For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.

For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.

Code

非递归

 public List<Integer> grayCode(int n) 
        List<Integer> results = new ArrayList<>();
        results.add(0);
        if (n > 0) 
            results.add(1);
        
        int mask = 1;
        for (int i = 2; i <= n; i++) 
            mask <<= 1;
            for (int j = results.size() - 1; j >= 0; j--) 
                int t = results.get(j).intValue();
                results.add(t | mask);
            
        
        return results;
    

递归

  public List<Integer> grayCode2(int n) 
        if (n == 0) 
            return Arrays.asList(0);
        
        List<Integer> results = new ArrayList<>();
        List<Integer> res = grayCode2(n - 1);
        results.addAll(res);
        int mask = 1 << (n - 1);
        for (int j = res.size() - 1; j >= 0; j--) 
            int t = res.get(j).intValue();
            results.add(t | mask);
        
        return results;
    

以上是关于Leetcode 89. Gray Code的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode89 Gray Code

LeetCode-89-Gray Code

Leetcode 89. Gray Code

LeetCode OJ 89. Gray Code

leetcode 89 Gray Code ----- java

[LeetCode] 89. Gray Code