Leetcode 89. Gray Code

来源:互联网 发布:react用js和jsx的区别 编辑:程序博客网 时间:2024/06/14 07:39
class Solution {public:    vector<int> grayCode(int n) {        if (n == 0) return vector<int>(1);        size_t size = pow(2, n);        vector<int> ret(size);        ret[0] = 0;        ret[1] = 1;        if (n == 1) return ret;        size_t i = 2;        size_t ri = 1;        int num = 2;        while (i != size) {            ret[i] = ret[ri] + num;            if (ri == 0) {                ri = i;                num *= 2;            } else {                --ri;            }            ++i;        }        return ret;    }};

神方法,还不是太理解

class Solution {public:    vector<int> grayCode(int n) {        bitset<32> b;        vector<int> ret;        backTrack(ret, b, n);        return ret;      }private:    void backTrack(vector<int>& ret, bitset<32>& b, int n) {        if (n == 0) {            ret.push_back(b.to_ulong());            return;        } else {            backTrack(ret, b, n - 1);            b.flip(n - 1);            backTrack(ret, b, n - 1);        }    }};