文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Description

Leetcode 89. Gray Code

2. Solution

  • Version 1
class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> result;
        bitset<32> code;
        traverse(result, code, n - 1);
        return result;
    }

private:
    void traverse(vector<int>& result, bitset<32>& code, int pos) {
        if(pos < 0) {
            int value = code.to_ulong();
            result.push_back(value);
            return;
        }
        traverse(result, code, pos - 1);
        code.flip(pos);
        traverse(result, code, pos - 1);
    }
};
  • Version 2
class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> result;
        int code = 0;
        traverse(result, code, n - 1);
        return result;
    }

private:
    void traverse(vector<int>& result, int& code, int pos) {
        if(pos < 0) {
            result.push_back(code);
            return;
        }
        traverse(result, code, pos - 1);
        code ^= (1 << pos);
        traverse(result, code, pos - 1);
    }
};

Reference

  1. https://leetcode.com/problems/gray-code/description/

相关文章:

  • 2021-04-09
  • 2022-12-23
  • 2021-09-20
  • 2022-01-13
  • 2022-02-20
  • 2021-07-14
  • 2022-01-08
猜你喜欢
  • 2021-12-05
  • 2021-06-02
  • 2018-02-06
  • 2021-08-26
  • 2022-01-06
  • 2021-09-28
  • 2022-12-23
相关资源
相似解决方案