在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。 给定一个整数n,请返回n位的格雷码,顺序为从0开始。 测试样例: 1 返回:[“0”,”1”]
class GrayCode { public: vector<string> getGray(int n) { if (n == 1) { vector<string> vec; vec.push_back("0"); vec.push_back("1"); return vec; } vector<string> vec = getGray(n - 1); auto vec_2 = vec; for (auto i = 0; i < vec.size(); ++i) { vec[i] = "0"+vec[i]; } for (auto i = 0; i < vec_2.size(); ++i) { vec_2[i] = "1"+vec_2[i]; } vec.insert(vec.end(),vec_2.rbegin(), vec_2.rend()); return vec; // write code here } };