注意:對於給定的 n,其格雷編碼順序並不唯一。根據以上定義, [0,2,3,1] 也是乙個有效的格雷編碼順序。
這個題有個小技巧,關於格雷碼的編碼規律,通過觀察可得到,
當 n=0 編碼為
當 n=1 編碼為
當 n=2 編碼為
當 n=3 編碼為
可以看出,當n>=1時,n的格雷編碼為第n-1的格雷編碼,在多個1,如n=3的格雷碼比n=2的格雷碼多了四個,而那四個格雷碼多了乙個移位的1。
/*
* 題目:格雷編碼
格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。
給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。即使有多個不同答案,你也只需要返回其中一種。
格雷編碼序列必須以 0 開頭*/
public
class
geleibianma};
int head=1;
for(
int i =
0; i < n; i++
) head<<=1;
//移位
}for
(integer x: list)
}}
89 格雷編碼
格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...
leetcode 格雷編碼
題目 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,0,...
89 格雷編碼
格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...