美文网首页
【leetcode】No.89:gray-code

【leetcode】No.89:gray-code

作者: I讨厌鬼I | 来源:发表于2019-08-26 20:26 被阅读0次

题目描述

格雷码是一种二进制编码系统,如果任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)
给定一个非负整数n,表示代码的位数,打印格雷码的序列。格雷码序列必须以0开头。
例如:给定n=2,返回[0,1,3,2]. 格雷码的序列为:

00 - 0
01 - 1
11 - 3
10 - 2

注意
对于一个给定的n,格雷码的序列不一定是唯一的,
例如:根据题目描述,[0,2,3,1]也是一个有效的格雷码序列

思路:


仔细观察上图,从后往前拿出数字,在最高位前面加1,因为最高位前面总是0,新加入的数字可以与尾部数字只有最高位前一位不同,而因为之前的序列是满足只有一位不同的,由于新的数字最高位都为1,所以这些数字也是满足要求的,而且这样可以保证遍历所有的情况。

代码:

import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> grayCode(int n) {
        ArrayList<Integer> res = new ArrayList();
        res.add(0);
        for (int i=0; i<n; i++){
            for (int j=res.size()-1; j>=0; j--){
                int num = res.get(j);
                num = num|(1<<i);
                res.add(num);
            }
        }
        return res;
    }
}

相关文章

  • 【leetcode】No.89:gray-code

    题目描述 格雷码是一种二进制编码系统,如果任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray ...

  • 位运算

    https://leetcode.com/problems/gray-code/description/这个位运算...

  • [刷题防痴呆] 0089 - 格雷编码 (Gray Code)

    题目地址 https://leetcode.com/problems/gray-code/[https://lee...

  • Leetcode_Gray_Code

    https://discuss.leetcode.com/category/97/gray-code 本来是想用深...

  • 89. Gray Code

    题目链接 https://leetcode.com/problems/gray-code/ 思路 假设n-1已经求...

  • gray-code

    The gray code is a binary numeral system where two succes...

  • 『No.89』

    暑期就要开始了,今年的暑假有点兴奋。 因为今年准备和朋友一起去威海度假。 以往的每年暑假或者寒假,都会带沛沛独自旅...

  • 努力上台阶第10弹

    NO.81 NO.82 NO.83 NO.84 NO.85 NO.86 NO.87 NO.88 NO.89

  • 0723 No.89

    原句:四月中的细雨,忽晴忽落,把空气洗得怪清凉的.嫩树叶儿依然很小,可是处处有些绿意.含羞的春阳只轻轻的,从薄云里...

  • No.89 城堡彩虹

    很喜欢木龙蕾小姐姐清新的画风,最近会多临摹一些。 用了黑色针管笔,效果不太好,线条显得死板。

网友评论

      本文标题:【leetcode】No.89:gray-code

      本文链接:https://www.haomeiwen.com/subject/rltjectx.html