格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。
給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。
示例 1:對於給定的 n,其格雷編碼序列並不唯一。輸入: 2
輸出: [0,1,3,2]
解釋: 00 - 0
01 - 1
11 - 3
10 - 2
例如,[0,2,3,1] 也是乙個有效的格雷編碼序列。00 - 0
10 - 2
11 - 3
01 - 1
示例 2:思路:關鍵是要找到規律輸入: 0
輸出: [0]
解釋: 我們定義格雷編碼序列必須以 0 開頭。
給定編碼總位數為 n 的格雷編碼序列,其長度為 2^n 。當 n = 0 時,長度為 2^0 = 1。
因此,當 n = 0 時,其格雷編碼序列為 [0]。
n = 0, [0]
n = 1, [0,1] //新的元素1,為0+2^0
n = 2, [0,1,3,2] // 新的元素[3,2]為[0,1]->[1,0]後分別加上2^1
n = 3, [0,1,3,2,6,7,5,4] // 新的元素[6,7,5,4]為[0,1,3,2]->[2,3,1,0]後分別加上2^2->[6,7,5,4]
c++**
class
solution
;for
(int i =
1; i <= n;
++i)
}return result;}}
;
發現一種新方法
i^(i>>1),自己與自己右移一位進行異或,得到的就是第 i 個格雷碼。
class
solution
return res;}}
;
89 格雷編碼
格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...
89 格雷編碼
題目描述 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。即使有多個不同答案,你也只需要返回其中一種。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 1...
89 格雷編碼
89.格雷編碼 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並...