leetcode89: Gray Code
来源:互联网 发布:普通话纠正软件 编辑:程序博客网 时间:2024/05/22 23:07
要求:编写格雷码,格雷码的位数为n
注意:掌握编码方式就很简单了。编码方式如下:
上一次假设有k个码,那么在k个码后面再写k个码,顺序是前k个码的倒序
前面k个码首位补“0”,后面k个码首位补“1”
例如:
已知序列 0 1
k=2
得到长度为2*k=4的新序列 0 1 || 1 0
前两个码首位补“0”,后面2个码首位补“1”
得到最终结果00 01 || 11 10
n=0 0
n=1 0 || 1
n=2 00 01 || 11 10
n=3 000 001 011 010 || 100 101 111 110
...
(顺便提一句,为什么要用格雷码?因为格雷码前后码元只有1bit不同,所以在使用类似QAM这种调制方式时,接收端就算判决出现一次错误,也只会使整个序列只有1bit的错误。感谢通信原理老师...)
public List<Integer> grayCode(int n) {ArrayList list = new ArrayList();list.add(0);int count = 1;if (n == 0)return list;while (count <= n) {ArrayList o = code(list);count++;list.clear();list.addAll(o);}return list;}public static ArrayList<Integer> code(ArrayList<Integer> l) {ArrayList newlist = new ArrayList();newlist.addAll(l);int[] nums = new int[l.size()];for (int i = 0; i < l.size(); i++)nums[i] = Integer.parseInt(String.valueOf(l.get(i))) + l.size();for (int i = nums.length - 1; i >= 0; i--)newlist.add(nums[i]);return newlist;}
0 0
- LeetCode89:Gray Code
- LeetCode89. Gray Code
- LeetCode89. Gray Code
- leetcode89-Gray Code(格雷码)
- leetcode89: Gray Code
- leetcode89~Gray Code
- Leetcode89. Gray Code
- leetcode89. Gray Code
- LeetCode89 Gray Code
- LeetCode89——Gray Code
- LeetCode89/60 Gray Code/Permutation Sequence--迭代
- Gray Code
- Gray Code
- gray code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- linux中的cron表达式
- vs2010中添加项目中找不到EntityFramework实体框架解决办法
- 队列的相关操作
- 快速上手Total Commander的经验分享
- uCOSii OSSchedLock()等函数说明
- leetcode89: Gray Code
- 关于推送系统设计的一些总结与思考(三)
- path.json
- hibernate基于Annotation的一对一外键映射
- 模板方式模式
- android ui和聊天界面
- vs2013生成的代码用2010打开的方法
- 11.23位运算1,2
- Android7.0 Vold 进程工作机制分析之整体流程