您的位置:首页 > 其它

[LeetCode] Gray Code

2015-09-16 20:42 363 查看
Gray Code My Submissions Question Solution Total Accepted: 41835

Total Submissions: 125744 Difficulty: Medium 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.

Show Tags Have you met this question in a real interview?

格雷码,n=3时的格雷码wei

000

001

011

010

110

111

101

格雷码的n位保留,另外n位不动,首位添加1,再逆序添加,则可以变成n+1位的格雷码。

class Solution {
public:
vector<int> grayCode(int n) {
vector<int> vec;
vec.push_back(0);
int highbit = 0;
while(n--){
highbit = vec.size();
//倒叙添加高位1
for(int i = highbit-1; i>=0;--i)
vec.push_back(highbit|vec[i]);
}
return vec;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: