• [leetcode] Gray Code


    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.
     
    二进制转格雷码: 
    从左边第二位起,将每位与左边一位的值异或,作为该位转码后的值(最左边一位依然不变)。 

    格雷码转二进制:
    从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。
     
    class Solution
    {
    public:
      vector<int> grayCode(int n)
      {
        int size = 1 << n;
        vector<int> ret(size);
    
        for(int i=0; i<size; i++)
          ret[i] = i ^ (i >> 1);
    
        return ret;
      } 
    };
  • 相关阅读:
    C# FTP操作
    SWUST OJ(963)
    插入排序(折半插入排序)
    SWUST OJ(962)
    SWUST OJ(961)
    SWUST OJ(960)
    SWUST OJ(957)
    SWUST OJ(956)
    SWUST OJ(955)
    SWUST OJ(954)
  • 原文地址:https://www.cnblogs.com/lxd2502/p/4487954.html
Copyright © 2020-2023  润新知