• 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 };
  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4504567.html
Copyright © 2020-2023  润新知