[leetcode] Gray Code
2013-08-18 10:38
441 查看
he 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.
For example, given n = 2, return
Its gray code sequence is:
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
格雷码的问题,给出一个更一般的解:
class Solution {
public:
vector<int> grayCode(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> ret;
int size = 1 << n;
for(int i = 0; i < size; ++i)
ret.push_back((i >> 1)^i);
return ret;
}
};
简单明了
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.
For example, given n = 2, return
[0,1,3,2].
Its gray code sequence is:
00 - 0 01 - 1 11 - 3 10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
[0,2,3,1]is
also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
class Solution { public: vector<int> grayCode(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> ret; if(n>32) return ret; set<int> checked; ret.push_back(0); checked.insert(0); unsigned int num=0; unsigned int flag=1; unsigned int direction=0; bool nonum=true; int i=0; for( ; ; direction=!direction,nonum=true){ for(i=0 ; i<n ; i++){ if(direction && i!=0) flag>>=1; if(!direction && i!=0) flag<<=1; if(checked.count(num^flag)) continue; else{ num^=flag; ret.push_back(num); checked.insert(num); nonum=false; } } if(nonum==true && i==n) break; } return ret; } };
格雷码的问题,给出一个更一般的解:
class Solution {
public:
vector<int> grayCode(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> ret;
int size = 1 << n;
for(int i = 0; i < size; ++i)
ret.push_back((i >> 1)^i);
return ret;
}
};
简单明了
相关文章推荐
- [leetcode] 89. Gray Code 解题报告
- leetcode 89:Gray Code
- [LeetCode] 033: Gray Code
- leetcode 89. Gray Code 按照index递归DFS解决 + Grey码生成公式 + 位运算直接计算
- LeetCode 89. Gray Code(格雷码)
- LeetCode 89. Gray Code
- 【题解】【排列组合】【回溯】【Leetcode】Gray Code
- [LeetCode] Gray Code
- LeetCode Gray Code
- [leetcode-89]Gray Code(c++)
- (java)leetcode-89:Gray Code
- Leetcode-89. Gray Code
- LeetCode89:Gray Code
- 【leetcode】89. Gray Code【java】
- [LeetCode]Gray Code
- [LeetCode] Gray Code
- LeetCode - Gray Code
- [LeetCode] Gray Code 解题报告
- LeetCode :: Gray Code[正确解答,真正考察点剖析]
- leetcode之Gray Code