• [leetcode]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

    Gray Code, 每次看每次都不记得。写下来让自己好温习。

    Gray Code 0 = 0, 下一项是toggle最右边的bit(LSB), 再下一项是toggle最右边值为 “1” bit的左边一个bit。然后重复

    如: 3bit

    Gray Code:  000, 001, 011, 010, 110, 111, 101, 100, 最右边值为 “1” 的bit在最左边了,结束。

    Binary      :  000, 001, 010, 011, 100, 101, 110, 111

    再者就是Binary Code 转换为Gray Code了。

    如:

      Binary Code :1011 要转换成Gray Code

      1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110

      其实就等于 (1011 >> 1) ^ 1011 = 1110

    有了上面的等式写code就简单了

    class Solution {
    public:
        vector<int> grayCode(int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int size = 1<<n;
            vector<int> grayCodes;
            grayCodes.resize(size);
    
            for (int i = 0; i < size; i++){
                int gCode = i ^ i>>1;
                grayCodes[i] = gCode;
            }
    
            return grayCodes;
        }
    };

    EOF

  • 相关阅读:
    Linux常用命令
    IDEA神器
    Nginx配置文件变量大全
    php-fpm.conf 文件详解
    mysqlsla慢查询分析工具教程
    Nginx upstream的5种权重分配方式
    Nginx简单性能调优
    MySQL 5.5主从同步设置教程
    mongoDB中批量修改字段
    Python学习笔记第四周
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2840437.html
Copyright © 2020-2023  润新知