格雷編碼python實現

2021-10-05 09:51:36 字數 1053 閱讀 7709

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。

給定乙個代表編碼總位數的非負整數 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,其格雷編碼序列並不唯一。例如,...