The 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 [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.
Solution
It is easy to understand according to the codes below
Code
//C++
class Solution {
public:
vector<int> grayCode(int n)
{
vector<int> res;
for(int i=0;i<pow(2.0,n);i++)
{
res.push_back(i ^ (i>>1));
}
return res;
}
};
#python
class Solution(object):
def grayCode(self, n):
"""
:type n: int
:rtype: List[int]
"""
res = []
Range = pow(2,n)
for i in range(Range):
temp = i ^ (i>>1)
res.append(temp)
return res
本文介绍了一种生成灰码序列的方法,灰码是一种二进制数系统,其中任意两个连续数值只有一位不同。通过一个简单的算法,可以快速生成指定位数的灰码序列。
367

被折叠的 条评论
为什么被折叠?



