zoukankan      html  css  js  c++  java
  • 19.2.23 [LeetCode 89] 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.

    Example 1:

    Input: 2
    Output: [0,1,3,2]
    Explanation:
    00 - 0
    01 - 1
    11 - 3
    10 - 2
    
    For a given n, a gray code sequence may not be uniquely defined.
    For example, [0,2,3,1] is also a valid gray code sequence.
    
    00 - 0
    10 - 2
    11 - 3
    01 - 1
    

    Example 2:

    Input: 0
    Output: [0]
    Explanation: We define the gray code sequence to begin with 0.
                 A gray code sequence of n has size = 2n, which for n = 0 the size is 20 = 1.
                 Therefore, for n = 0 the gray code sequence is [0].

    题意

    怎么说呢,很脑残

    就在这道题的世界观里,一个二进制数只有其中一个位跟另一个数不一样,这两个数就可以成为相邻关系

    给位数求顺序集合

    题解

    那就递归一下,每次递归都把n-1的结果反着遍历一遍,可以保证是相邻关系

     1 class Solution {
     2 public:
     3     vector<int> grayCode(int n) {
     4         vector<int>ans;
     5         if (n == 0) {
     6             ans.push_back(0);
     7             return ans;
     8         }
     9         ans = grayCode(n - 1);
    10         int m = ans.size(), pls = (1 << (n - 1));
    11         for (int i = m - 1; i >= 0; i--) 
    12             ans.push_back(pls + ans[i]);
    13         return ans;
    14     }
    15 };
    View Code
  • 相关阅读:
    ural 1080 Map Coloring DFS染色
    hdu 4287 Intelligent IME
    hdu 4268 Alice and Bob 区域赛 1002 (STL、SBT实现)
    SBT专题训练
    hdu 4276 The Ghost Blows Light 区域网络赛 1010 树上背包+spfa
    hdu 4278 Faulty Odometer
    hdu 4279 Number
    VIM 插件(转)
    Linux环境变量的设置(转)
    福昕PDF阅读器 v3.3 破解
  • 原文地址:https://www.cnblogs.com/yalphait/p/10422465.html
Copyright © 2011-2022 走看看