【Leetcode】Gray Code
2015-11-27 10:24
288 查看
题目链接:https://leetcode.com/problems/gray-code/
题目:
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
is:
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
思路:
1位格雷码有两个码字
(n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
(n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1
算法:
题目:
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.
思路:
1位格雷码有两个码字
(n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
(n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1
算法:
public List<Integer> grayCode(int n) { if (n == 0) { List<Integer> tmp = new ArrayList<Integer>(); tmp.add(0); return tmp; } List<Integer> l1 = grayCode(n - 1); int addNum = 1 << (n - 1);// 将1左移n-1位 List<Integer> l2 = new ArrayList<Integer>(l1); for (int i = l1.size() - 1; i >= 0; i--) { l2.add(addNum + l1.get(i)); } return l2; }
相关文章推荐
- sqlite if not exists应用实例
- Android布局属性说明
- 欢迎使用CSDN-markdown编辑器
- linux下使用yum安装mysql
- Android之SurfaceView学习(一)
- Java NIO (七) FileChannel
- NHibernate条件查询及聚合函数的运用
- 基于SSH的Web理财管理系统
- Linux下安装python-opencv
- Android登录模块原理及实现
- android中getSystemService通过系统提供的Manager接口来访问及设置服务数据
- 通过 WebBrowser 获取网页截图(第二种)
- Android项目:proguard混淆第三方jar.
- Spring 定时器
- PHP脚本和JAVA连接mysql数据库
- 全球域名商解析新增量15强:易名中国卫冕失败
- linux防火墙操作 可以解决区域网浏览器访问linux问题
- 序列化接口:Serializable 、Parcelable
- CSS入门(8)-position和 z-index属性
- Android项目:proguard混淆第三方jar.