美文网首页
格雷编码

格雷编码

作者: xialu | 来源:发表于2022-01-08 23:41 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/gray-code

    题目描述:

    n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:
    每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)
    第一个整数是 0
    一个整数在序列中出现 不超过一次
    每对 相邻 整数的二进制表示 恰好一位不同 ,且
    第一个 和 最后一个 整数的二进制表示 恰好一位不同
    给你一个整数 n ,返回任一有效的 n 位格雷码序列 。

    示例 1:

    输入:n = 2
    输出:[0,1,3,2]
    解释:
    [0,1,3,2] 的二进制表示是 [00,01,11,10] 。

    • 00 和 01 有一位不同
    • 01 和 11 有一位不同
    • 11 和 10 有一位不同
    • 10 和 00 有一位不同
      [0,2,3,1] 也是一个有效的格雷码序列,其二进制表示是 [00,10,11,01] 。
    • 00 和 10 有一位不同
    • 10 和 11 有一位不同
    • 11 和 01 有一位不同
    • 01 和 00 有一位不同
    示例 2:

    输入:n = 1
    输出:[0,1]

    代码实现:
    class Solution {
        public List<Integer> grayCode(int n) {
            List<Integer> ans = new ArrayList<>();
            ans.add(0);
            while (n-- > 0) {
                int m = ans.size();
                for (int i = m - 1; i >= 0; i--) {
                    ans.set(i, ans.get(i) << 1);
                    ans.add(ans.get(i) + 1);
                }
            }
            return ans;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:格雷编码

          本文链接:https://www.haomeiwen.com/subject/yvgycrtx.html