【leetcode】89. Gray Code
2016-09-04 23:08
330 查看
一、题目描述
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
code sequence is:
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
思路:需要先找出规律,试着写几个用例就可以发现了。当n=0 时,[0],当n=1 时, [0, 1],当n=2时,[00, 01, 11, 10],当n=3 时,[000, 001, 011, 010, 110, 111, 101, 100]。可以发现000, 001, 011, 010 正好是n=2 的数值在第一位加了一个0,而110, 111,
101, 100,正好是n=2 的数值按逆序在每个数的第一位加了一个1。
c++代码(3ms,100%)
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> res;
if(n==0){
res.push_back(0);
return res;
}
vector<int> last_res = grayCode(n-1);
//获取之前的数值
res.insert(res.end(),last_res.begin(),last_res.end());
for(int i=(int)last_res.size()-1;i>=0; i--){
res.push_back(last_res[i]+(1<<n-1));
}
return res;
}
};
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.
思路:需要先找出规律,试着写几个用例就可以发现了。当n=0 时,[0],当n=1 时, [0, 1],当n=2时,[00, 01, 11, 10],当n=3 时,[000, 001, 011, 010, 110, 111, 101, 100]。可以发现000, 001, 011, 010 正好是n=2 的数值在第一位加了一个0,而110, 111,
101, 100,正好是n=2 的数值按逆序在每个数的第一位加了一个1。
c++代码(3ms,100%)
class Solution {
public:
vector<int> grayCode(int n) {
vector<int> res;
if(n==0){
res.push_back(0);
return res;
}
vector<int> last_res = grayCode(n-1);
//获取之前的数值
res.insert(res.end(),last_res.begin(),last_res.end());
for(int i=(int)last_res.size()-1;i>=0; i--){
res.push_back(last_res[i]+(1<<n-1));
}
return res;
}
};
相关文章推荐
- LeetCode 89 Gray Code
- leetcode - 89.Gray Code
- [LeetCode]89. Gray Code
- 【LeetCode】C# 89、Gray Code
- Leetcode 89. Gray Code
- Leetcode 89. Gray Code 格雷码 解题报告
- LeetCode 89. Gray Code(格雷码)
- 【LeetCode】89. Gray Code (2 solutions)
- LeetCode89——Gray Code
- *LeetCode 89. Gray Code 规律题
- LeetCode 89: Gray Code解题报告
- Leetcode 89. Gray Code
- leetCode 89.Gray Code (格雷码) 解题思路和方法
- [LeetCode 89] Gray Code (格雷码问题)
- LeetCode 89 Gray Code (Python详解及实现)
- LeetCode89 Gray Code
- LeetCode 89. Gray Code
- leetcode89~Gray Code
- leetcode 89:Gray Code
- LeetCode89 Gray Code