leetcode笔记：Gray Code（2016腾讯软件开发笔试题） 原

一.题目描述

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.

class Solution
{
public:
vector<int> buildGrayCode(int n)
{
}

int ans(int n)
{
//每一位都 i & (i -1)
vector<int> vec;
int x = 1 << n;
for(int i=0; i<x; i++)
{
vec.push_back(i & (i>>1));
cout << vec[i] << ' ';
}
return vec;
}

//可以改成递归
int recur_ans(int n)
{
vector<int> vec;
if(n < 0 ) return vec;
if(n == 1) {
vec.push_back(0);
vec.push_back(1);
return vec;
}
for(int i=2; i<n; i++)
{
int highbit = 1 << (i - 1);
for(int j = vec.size() -1; j>=0; j--)
{
vec.push_back(highbit|j);
}
}
return vec;
}

vector<int> recur_ans2(int n)
{
if(n ==0)
{
vector<int> vec;
vec.push_back(0);
return vec;
}else{
vector<int> res = recur_ans2(n-1);
int len = res.size();
int highbit = 1 << (n-1);
for(int i=len-1; i>=0; i--)
{
res.push_back(res[i] | highbit );
}
return res;
}
}
};

90 道名企笔试和算法题 (含答题讨论)

（点击上方公众号，可快速关注） 节选自「算法爱好者」微信公号的精选算法题和名企笔试题。 问：如何获取题目列表？ 答：① 长摁二维码关注「算法爱好者」，② 然后给它发送 名企笔试 或 算法...

Python开发者
2018/01/21
0
0

mickelfeng
2013/10/12
244
0

Gavin__Zhou
2017/05/01
0
0

CSDN资讯
02/19
0
0

02/22
0
0

code-ortaerc

5
0

[TOC] 1.1.1标签操作v-text&v-html v-text：会把data中绑定的数据值原样输出。 v-html：会把data中值输出，且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

8
0
VMware vSphere的两种RDM磁盘

12
0
【AngularJS学习笔记】02 小杂烩及学习总结

16
0
Linux 内核的五大创新

20
0 