[LeetCode]Gray Code
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]Gray Code相关的知识,希望对你有一定的参考价值。
题目:给定一个数字n,表示二进制数字的位数,求出n位格雷码相应的十进制数
比如,给定n=2,则返回 [0,1,3,2]
. 它的格雷码序列是:
00 - 0 01 - 1 11 - 3 10 - 2算法:
二进制 二进制右移 格雷码 -------------------------- 000 000 000 001 000 001 010 001 011 011 001 010 100 010 110 101 010 110 110 011 101 111 011 100 得出 : garyCode = x ^ (x>>1)
public class Solution { /** * Algorithm: * * binary binary>>1 gray * -------------------------- * 000 000 000 * 001 000 001 * 010 001 011 * 011 001 010 * 100 010 110 * 101 010 110 * 110 011 101 * 111 011 100 * * find : garyCode = x ^ (x>>1) * */ public List<Integer> grayCode(int n) { List<Integer> grayCodeList = new ArrayList<Integer>(); int nLoops = (1 << n); // 2^n-1 for (int i=0; i<nLoops; ++i) { int grayCode = (i ^ (i >> 1)); grayCodeList.add(grayCode); } return grayCodeList; } }
以上是关于[LeetCode]Gray Code的主要内容,如果未能解决你的问题,请参考以下文章