首页 > 代码库 > [LeetCode]Gray Code
[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; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。