zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2840437.html
Copyright © 2011-2022 走看看