Gray Code
来源:互联网 发布:淘宝卖家不评论吗 编辑:程序博客网 时间:2024/05/19 16:22
1.题目
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。
给定一个非负整数 n
,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0
开始,并覆盖所有的 2n 个整数。
对于给定的 n
,其格雷编码顺序并不唯一。
根据以上定义, [0,2,3,1]
也是一个有效的格雷编码顺序。
给定 n = 2
, 返回 [0,1,3,2]
。其格雷编码顺序为:
00 - 001 - 111 - 310 - 2
2.算法
如果我们的到n-1位的格雷码,怎么得到n位格雷码,我们在n-1位前面加零,并把n-1位倒序前面加一
public ArrayList<Integer> grayCode(int n) { // Write your code here ArrayList<Integer> res = new ArrayList<Integer>(); if (n < 0) { return res; } if (n == 0) { res.add(0); return res; } res.add(0); res.add(1); for (int i = 2; i <= n; i++) { int size = res.size(); for (int j = size - 1; j >= 0; j--) { res.add(res.get(j) + (1 << (i - 1))); } } return res; }
参考
http://blog.csdn.net/linhuanmars/article/details/24511221
0 0
- 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
- LA 6393 Self-Assembly
- 文件选择器演示
- Java虚拟机体系结构
- Steady Cow Assignment POJ - 3189
- const基础
- Gray Code
- 音视频格式大全:stream type
- C++外观模式
- 16-Oracle入门之数据库事务
- Android——NDK开发(一)
- linux磁盘浅析
- Codeforces Round #390 (Div. 2)-DFedor and coupons(优先队列)
- 自定义控件一
- Reactor模式详解