leetcode笔记:Gray Code(2016腾讯软件开发笔试题)
2015-09-09 00:00
183 查看
一.题目描述
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; } } };
相关文章推荐
- 2016 腾讯笔试编程题_格雷编码
- TQ335x开发板与stm32F103通信
- 通达OA与阿里钉钉生态合作 吹响移动办公集结号
- struts2——文件上传
- struts2——多文件上传
- struts2——拦截器
- json解析
- Content-disposition
- centos6中安装ftp服务器vsftpd
- 一些Linux相关的技术电子书
- iOS判断是否含有非法字符代码
- saltstack 多master配置
- httpclient 中文域名转换
- 天下数据总结服务器选择的三要素
- google 搜索技巧
- wifi自身的基本原理
- android wifi
- java简单的计算器类
- java 图形界面 gui
- java--xml