• leetcode graycode


    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;
        }
    };
    
  • 相关阅读:
    文字有阴影效果
    asp.net(c#)将彩色图片变灰阶图片
    C#异步调用的方法
    PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
    php 获取当前用户的IP
    网站前端性能优化
    grep命令的使用
    学C++的经验总结
    主键、唯一键与唯一索引的区别
    shell的比较运算符
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/3059478.html
Copyright © 2020-2023  润新知