zoukankan      html  css  js  c++  java
  • LeetCode89 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(Medium)

    For example, given n = 2, return [0,1,3,2]. Its gray code sequence is: 

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

    分析:

    考察三位的格雷码和两位的格雷码如下:

    00 01 11 10;

    000 001 011 010 110 111 101 100;

    可以看出如下规律,三位的格雷码是二位的格雷码前面加上0,和倒序二维格雷码前面加上1得到的。

    所以要求n为格雷码,只需要在所有n-1位格雷码前面加0,并在倒序的所有n-1位格雷码前面加1即可。

    代码:

     1 class Solution {
     2 public:
     3     vector<int> grayCode(int n) {
     4         if (n == 0) {
     5             return vector<int> {0};
     6         }
     7         vector<int> temp = grayCode(n - 1);
     8         vector<int> result;
     9         for (int i = 0; i < temp.size(); ++i) {
    10             result.push_back(temp[i]);
    11         }
    12         for (int i = temp.size() - 1; i >= 0; --i) {
    13             result.push_back(temp[i] + pow(2, n - 1));
    14         }
    15         return result;
    16     }
    17 };
     
  • 相关阅读:
    json
    网页版 treeview使用中遇到的问题
    随机获取一条数据
    oracle
    发送邮件
    DataGrid列的合并
    python简介
    SQLSERVER
    Maven 基础
    Maven 构建jar包
  • 原文地址:https://www.cnblogs.com/wangxiaobao/p/5986203.html
Copyright © 2011-2022 走看看