zoukankan      html  css  js  c++  java
  • 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.

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

    分析:返回格雷码。二进制数转为格雷码的过程为:从左至右,保留第一位,将二进制数第一位或上二进制第二位得到格雷码第二位,二进制第二位或上二进制第三位得到格雷码第三位....以此类推。比如,二进制数1010,首先保留1,然后将1或上0得到1, 0或上1得到1, 1或上0得到0,所以结果为1110。

    其实说白了就是a ^ (a >> 1).

    运行时间:5ms

     1 class Solution {
     2 public:
     3     vector<int> grayCode(int n) {
     4         vector<int> result;
     5         int count = 1 << n;
     6         
     7         for(int i = 0; i < count; i++)
     8             result.push_back(i ^ i >> 1);
     9         
    10         return result;
    11     }
    12 };
  • 相关阅读:
    专业开发: MSIL语言学习笔记
    (破解)去掉ILDasm的SuppressIldasmAttribute限制
    UDP编程中的connect
    linux 下的UDP client/server 示例
    HTML颜色代码表
    元素(Element)选择器(jQuery)
    ID选择器(jQuery)
    Photoshop快捷键大全
    MyEclipse快捷键大全
    Windows7快捷键大全
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4504567.html
Copyright © 2011-2022 走看看