zoukankan      html  css  js  c++  java
  • [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;
      } 
    };
  • 相关阅读:
    python基础之流程控制
    多线程---阻塞队列
    多线程---线程同步
    多线程---线程实现
    多线程start();之后会开辟新的栈空间
    java中使用String的split分隔字符串注意事项
    IO流
    java中的多态
    关于java中的接口
    关于final关键字
  • 原文地址:https://www.cnblogs.com/lxd2502/p/4487954.html
Copyright © 2011-2022 走看看