标签:vector 就是 结果 ack inpu out define accept 答案
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.
Example 1:
Input: 2
Output: [0,1,3,2]
Explanation:
00 - 0
01 - 1
11 - 3
10 - 2
For a given n, a gray code sequence may not be uniquely defined.
For example, [0,2,3,1] is also a valid gray code sequence.
00 - 0
10 - 2
11 - 3
01 - 1
Example 2:
Input: 0
Output: [0]
Explanation: We define the gray code sequence to begin with 0.
A gray code sequence of n has size = 2n, which for n = 0 the size is 20 = 1.
Therefore, for n = 0 the gray code sequence is [0].
class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(0); for(int i=0;i<n;++i) { int n=res.size(); for(int j=n-1;j>=0;--j) res.push_back(res[j]|1<<i); } return res; } };
这题要求给定n,生成所有二进制长度为n的数字, 并且在他们当中每两个连续的数字的二进制形式只有一bit不同, 其实最后数组的内容就是从0到2的n次方所有数字,但是排序上有讲究.
采用的方法是迭代,如果拥有了n的结果,那么n+1的结果也可以得到.
这只是gray code的方法之一.毕竟只要符合要求有多种答案
标签:vector 就是 结果 ack inpu out define accept 答案
原文地址:https://www.cnblogs.com/lychnis/p/11762206.html