您的位置:首页 > 其它

Leetcode 89. Gray Code

2017-12-20 21:38 316 查看
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);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: