格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。
給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。
示例 1:
from typing import list
class solution:
def graycode(self, n: int) -> list[int]:
g = ['' for _ in range(n+1)]
if n==0 : return [0]
else: g[0] =['0']
if n==1 : return [0, 1]
else: g[1] = ['0','1']
h0 = lambda x: '0' + x
h1 = lambda x: '1' + x
two = lambda x, y: int(x) * (2 ** int(y))
for i in range(2, n + 1):
tmp = list(map(h0, g[i - 1]))
value = tmp[:] + g[i-1][::-1]
value[len(tmp):] = list(map(h1, value[len(tmp):]))
g[i] = value
l = [i for i in range(n)]
r =
for i in range(len(g[n])):
value = g[n][i]
r += [sum(list(map(two, value , l[::-1])))]
return r
擴充套件:
自己實現的二進位制轉整數:
s = ['1','0','0','0']
two = lambda x,y: x*(2**y)
l = [i for i in range(len(s))]
r = sum(list(map(int(two),s,l[::-1])))
格雷編碼(python實現)
題目描述 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯...
格雷編碼遞迴實現
在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 返回 0 1 結題思路 如果仔細觀察格雷碼的結構,我們會有以下發現 1 除了最高位 左邊...
89 格雷編碼
格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...