`

Gray Code 格雷码

阅读更多
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.

解决这道题目关键在于了解格雷码的编码规则,什么是格雷码,可以参考之前的一篇有关格雷码的介绍,这里不再赘述。实现代码如下:
public class Solution {
    public List<Integer> grayCode(int n) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(0);
        for(int i = 1; i <=n; i++) {
            for(int j = list.size() - 1; j >=0; j--) {
                list.add(list.get(j) + (int)Math.pow(2, i - 1));
            }
        }
        return list;
    }
}
1
1
分享到:
评论

相关推荐

    格雷码(Gray Code)序列

    public class GrayCode { public static List&lt;Integer&gt; generateGrayCode(int n) { List&lt;Integer&gt; result = new ArrayList(); if (n == 0) { result.add(0); return result; } List&lt;Integer&gt; subResult = ...

    binary_to_gray.rar_binary_to_gray_fpga gra_gray_gray code_格雷码

    标题"binary_to_gray.rar_binary_to_gray_fpga Gra_gray_gray code_格雷码"暗示了这个压缩包文件包含了一个关于在FPGA上实现二进制到格雷码转换的设计。"binary_input"是二进制数据的输入端口,它接收4位并行的二...

    geleicounter.rar_FPGA计数器_counter gray vhdl_gray code_格雷码_格雷码计数器

    对于这个"counter_gray.vhd"文件,我们可以期待它包含了用VHDL编写的格雷码计数器的代码。 格雷码计数器的设计通常涉及以下几个关键部分: 1. **计数状态**:计数器有多个状态,每个状态对应一个格雷码。例如,...

    gray_cnt.rar_gray code verilog_gray_cnt_格雷码_格雷码计数器_计数器

    格雷码(Gray Code),又称为灰度码或无歧义二进制码,是一种特殊的二进制编码方式,它的特点在于相邻两个数值之间只有一位不同。这种编码在电子、通信、计算机等领域有着广泛的应用,比如在数据传输、编码器、解码...

    C经典算法之格雷码(Gray Code)

    ### C经典算法之格雷码(Gray Code) #### 格雷码简介 格雷码(Gray Code)是一种特殊的编码方式,其特点在于任意两个相邻的代码仅有一位不同。这种编码方式最早由贝尔实验室的Frank Gray在1940年代提出,并在1953...

    C语言写的产生格雷码的简单程序

    在格雷码生成中,右移用于将当前格雷码与上一个格雷码进行比较,以确定下一个格雷码的生成方式。 2. **异或操作**: 异或操作在二进制中表示,如果两个输入位相同,结果为0;如果不同,结果为1。在生成格雷码时,...

    S7-1200 格雷码转成10进制数据.rar

    在这个特定的场景中,我们关注的是如何将格雷码(Gray Code)转换为10进制数,这是一个在数字系统和信号处理中常见的任务,尤其是在具有位置编码器或旋转编码器的系统中。格雷码是一种非重叠的二进制编码,其相邻的...

    生成格雷码图案matlab程序

    在IT领域,特别是计算机科学与图像处理中,格雷码(Gray Code)是一种重要的二进制数字系统。它最大的特点是相邻两个数值之间仅有一位不同,这使得在编码转换时能够减少错误的发生。在本主题中,我们将深入探讨如何...

    十进制转普通二进制和格雷码

    在IT领域,我们经常需要处理各种编码形式,其中包括二进制和格雷码。本文将深入探讨如何将十进制数转换为普通二进制和格雷码,并使用MATLAB来实现这一过程。同时,我们将讨论如何从日志文件中提取特定数据列,并将...

    二进制转格雷码MATLAB程序

    二进制编码与格雷码编码是数字系统中常见的两种编码方式。二进制编码是我们最熟悉的,由0和1组成,而格雷码(Gray Code),又称格雷码或葛莱码,是一种非顺序的编码系统,相邻两个数字之间仅有一位不同。这种特性在...

    分治法求格雷码的C语言代码

    本文介绍了一种利用分治法求解格雷码(Gray Code)的方法,并提供了相应的C语言代码实现。格雷码是一种二进制数字系统,在该系统中,两个连续的数值其二进制表示仅有一位不同。 #### 描述解析 这段描述简要介绍了...

    int2gray.rar_格雷码_格雷码生成

    格雷码,又称格雷编码(Gray Code),是一种非重叠二进制编码方式,它的主要特点是相邻两个数值之间仅有一位二进制数不同。在数据传输、编码电路设计、图像处理等领域有广泛应用,比如在多路开关系统、编码器、解码...

    格雷码图片生成与保存C++实现代码

    save_image(pixels, width, height, "grayCode.png"); // 保存为PNG图片 return 0; } ``` 上述代码只是一个简化的示例,实际项目中需要根据选定的图像库完成`save_image`函数的具体实现。OpenCV库提供了`imwrite...

    1. 科普特序列和格雷码序列_格雷差分序列_科普特序列和格雷码序列_

    在MATLAB中,可以使用`graycode`函数生成格雷码序列。 格雷差分序列(Gray Difference Sequence)则是基于格雷码的概念,它关注的是连续格雷码之间的变化。这个序列通常用于测量系统,尤其是那些需要精确跟踪连续...

    32位格雷码译码程序

    在PLC编程中,有时需要处理不同的编码方式,其中格雷码(Gray Code)是一种无权码,其特点是相邻两个数字之间只有一位不同,这种特性在数据传输和错误检测中具有优势。本主题主要关注32位格雷码的译码,即将其转换为...

    格雷码的进制转换

    格雷码(Gray Code),又称为格雷编码或无权码,是一种特殊的二进制数字系统,其特点是相邻两个数值之间仅有一位不同。在数据传输、计算机科学、电子工程等领域有广泛应用,特别是在避免因快速变化导致的错误传输上...

    glm.zip_existzpp_格雷码_格雷码换算

    `Graycode.m`这个文件很可能是一个MATLAB脚本或函数,用于实现格雷码的相关操作,如生成指定位数的格雷码序列,或者进行格雷码与普通二进制码之间的转换。在MATLAB中,你可以编写函数来生成格雷码,例如: ```...

    参考资料-格雷码Gray编码器与单片机的接口设计.zip

    格雷码(Gray Code),又称为格雷码或葛莱码,是一种非重叠的二进制编码方式,它的特点是相邻两个数值之间只有一个位元差异。这种编码在电子工程、计算机科学以及通信等领域有着广泛的应用,特别是在数据传输、编码...

    altera官方格雷码计数器,verilog代码编写

    在数字电路设计中,格雷码(Gray Code)是一种非重叠二进制编码方式,它的特点是相邻两个数值之间仅有一位二进制位不同。这种编码在数据转换、编码器、解码器以及计数器等领域有广泛应用。 Altera公司是知名的 FPGA...

    GrayCode(24,12)

    格雷码,又称格雷编码,是一种二进制数字系统,它的特点是相邻两个数值之间仅有一位不同。在“GrayCode(24,12)”中,“24”表示总共有24位,而“12”则指的是信息位的数量。这意味着在这样的格雷码系统中,有12位是...

Global site tag (gtag.js) - Google Analytics