zoukankan      html  css  js  c++  java
  • 411. 格雷编码

    描述

    格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。

    给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖所有的 2n 个整数。

    对于给定的 n,其格雷编码顺序并不唯一。

    根据以上定义, [0,2,3,1] 也是一个有效的格雷编码顺序。

    样例

    给定 n = 2, 返回 [0,1,3,2]。其格雷编码顺序为:

    00 - 0
    01 - 1
    11 - 3
    10 - 2

    挑战

    O(2n) 时间复杂度。

    class Solution {
    public:
        /**
         * @param n: a number
         * @return: Gray code
         */
        vector<int> grayCode(int n) {
            // write your code here
            vector<int> result;
            const size_t size = 1 << n; // 2^n
            result.reserve(size);
            for (size_t i = 0; i < size; ++i)
                result.push_back(i ^ (i >> 1));
            return result;
        }
    };
    
  • 相关阅读:
    Nginx开启Gzip压缩
    VMware克隆虚拟机,克隆机网卡启动不了解决方案
    Linux 几个简单的操作命令
    1. Java环境搭建及demo
    美柚记录
    action找不到
    < >
    document 写法
    develop process
    git stash
  • 原文地址:https://www.cnblogs.com/narjaja/p/9811399.html
Copyright © 2011-2022 走看看