Java実装LeetCode 89グレイコード

89.グレイコード

グレイコードは、このシステムでは、ビット数の差の2つのみの連続する値進数システムです。

印刷グレーコード配列であるN符号化された非負の整数を表すビットの総数を、与えられました。グレイコード配列は0で始まる必要があります。

例1:

入力:2
出力:[0,1,3,2]
説明:
00から0
。01から1
。11から3
10から2

ユニークゴレイコーディング配列ではない所与のnについて。
例えば、[0,2,3,1]グレイ符号化はまた、有効なシーケンスです。

00から0
10から2
11から3。
01から1。
例2:

入力:0
出力:[0]
説明:私たちは、0で開始する必要がありますコード配列をゴレイを定義します。
n個の所定のゴレイコーディング配列をエンコードするビットの総数は、2n個の長さを有しています。n = 0の場合、長さ20 = 1。
したがって、n = 0の場合、グレイコードシーケンス[0]です。

PS:
キーグレーを生成する処理は、G(I)= I ^、符号化された見つけることである (I / 2)、
例えば3 = N-:
G(0)= 000、
。G(1)1 = ^ 0 ^ 000 = 001 = 001
G(2)= 2 ^ 1 = 010 ^ 001 = 011
G(3)= 3 ^ 1 = 011 ^ 001 = 010
G(4)= 4 ^ 2 = 100 ^ 010 = 110
G(5)= 5 ^ ^ 010 = 101 = 2 111
G(図6)。6 = ^^。3 110 011 = 101 =
G(図7)。3 = 7 ^ 111 ^ 011 = 100 =

class Solution {
    public List<Integer> grayCode(int n) {
 

        List<Integer> ret = new ArrayList<>();
        for(int i = 0; i < 1<<n; ++i)
            ret.add(i ^ i>>1);
        return ret;
    }
}
リリース1206元の記事 ウォンの賞賛10000 + ビュー600,000 +

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104361884