Gray Code
来源:互联网 发布:猎豹软件官网 编辑:程序博客网 时间:2024/05/21 17:46
http://blog.csdn.net/sbitswc/article/details/20110655
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 - 001 - 111 - 310 - 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.
HINT(from internet):
The tricky part of this question is to recognize the recursive structure here. For n = 0, sol = [0], that’s the base case. For recursive step, let’s take n = 2 and n = 3 as examples. n = 2, sol = [0, 1, 3, 2]; n = 3, sol = [0, 1, 3, 2, 6, 7, 5, 4]. Look at these two solutions, we see when n = 3, we add 4 more elements [6, 7, 5, 4] and they are just [2+4, 3+4, 1+4, 0+4]. That is sol(n+1) = sol(n) + [ reverse(sol(n)) + 2^(n) ].
学过格雷码的童鞋应该比较好理解,比如n=3时
000
001
011
010
110
111
101
100
规律是 将格雷码看成是上下两部分 n=1
上 0 下 1
n=2
上为n=1时的格雷码
下为n=1时的格雷码的倒序再加上最前面的1
public class Solution { public ArrayList<Integer> grayCode(int n) { ArrayList<Integer> res = new ArrayList<Integer>(); res.add(0); for(int i = 0; i < n; i++){ int size = res.size(); for(int k=size; k>0;k--){ res.add(res.get(k-1) + (1<<i)); } } return res; }}
- Gray Code
- Gray Code
- gray code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- chapter1基础:逻辑和证明
- 九度oj 题目1493:公约数
- MySQL常用命令一
- Yii框架学习笔记
- 基于模板的通用代码生成器LKGenerator(四)-核心技术之各种数据库查询表信息sql整理
- Gray Code
- MySQL常用命令 (二)
- 創新組合型的架構設計(Part-1):EIT造形知多少?
- zoj 3760 Treasure Hunting(最大点权独立集)
- PHP microtime 返回当前 Unix 时间戳和微秒数
- 搭建安卓开发环境
- 九度oj 题目1470:调整方阵
- hdu 3177 Crixalis's Equipment (贪心- - 排序)
- 新ccna基础--18 vlan单臂路由