算法系列——Gray Code
来源:互联网 发布:17年华研网络词作大赛 编辑:程序博客网 时间:2024/06/03 22:46
题目描述
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.
解题思路
仔细观察格雷码
当n=1时
10
当n=2时
00011110
当n=3时
000001011010110111101100
可以发现,n的格雷码,就是n-1的格雷码,再加上它们的逆序前面多一个1。
程序实现
public class Solution { public List<Integer> grayCode(int n) { List<Integer> res=new ArrayList<Integer>(); if(n<0) return res; res.add(0); int highValue; for(int i=0;i<n;i++){ highValue=1<<i; for(int j=res.size()-1;j>=0;j--) res.add(res.get(j)+highValue); } return res; }}
阅读全文
0 0
- 算法系列——Gray Code
- LeetCode——Gray Code
- leetcode——Gray Code
- LeetCode——Gray Code
- LeetCode89——Gray Code
- Algorithms—89.Gray Code
- leetcode 089 —— Gray Code
- 递归——生成格雷码(gray code)
- [LeetCode]—Gray Code 计算格雷码
- [leetcode刷题系列]Gray Code
- 递归算法+奇妙规律 89. Gray Code
- Leetcode算法学习日志-89 Gray Code
- leetcode——89——Gray Code
- 2.1.19—线性表—Gray Code
- Gray Code
- Gray Code
- gray code
- Gray Code
- 时间戳转换
- 信息查询系统编写--三层架构
- Java读取文件夹大小的6种方法及代码
- linux设备驱动模型之uevent
- Java中调用C#编写的dll
- 算法系列——Gray Code
- 基于jq的导航栏元素划入效果
- 常见Linux命令
- 头文件包含顺序以及设计原则
- AFNetworking 3.0 源码解读(八)之 AFImageDownloader
- ThinkPHP3.2.3 添加新模块过程
- qt dependant doesn not exist错误的解决方法
- 《图解HTTP》整理(1)
- AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager