格雷碼是一種二進位制編碼系統,如果任意兩個相鄰的**只有一位二進位制數不同,則稱這種編碼為格雷碼(gray code)。
給定乙個非負整數n,表示**的位數,列印格雷碼的序列。格雷碼序列必須以0開頭。
例如:給定n=2,返回[0,1,3,2]. 格雷碼的序列為:
00 - 0↵01 - 1↵11 - 3↵10 - 2
注意:對於乙個給定的n,格雷碼的序列不一定是唯一的,
例如:根據題目描述,[0,2,3,1]也是乙個有效的格雷碼序列
遞迴寫法:
class
solution
:def
graycode
(self , n )
:# write code here
res=
if n==0:
return[0
]else
: t=
1<<
(n-1
)#2**(n-1)
"""for i in self.graycode(n-1)[-1::-1]:
res=
[t+(
1<<
(n-1))
for t in self.graycode(n-1)
[-1:
:-1]
]return self.graycode(n-1)
+res
迴圈寫法:
def
g2(n)
: res=
for i in
range(1
,n+1):
if i==1:
res=[0
,1]else
: res_t=
[t+(
1<<
(i-1))
for t in res[::
-1]]
res=res+res_t
print
(res)
Gray碼 格雷碼 二進位制
以下內容是看了matrix67的關於二進位制的blog link 的一點總結與摘錄。gray碼,中文 格雷碼 是一種特殊的編碼,相鄰兩個格雷碼的二進位制表示中有且僅有一位不同,且 n 階 gray 碼是 0 2 n 1 的乙個排列。n 階 gray 碼可以由 n 1 階 gray 碼映象翻轉之後最前...
LeetCode 格雷碼序列的生成
問題概述 在一組數的編碼中,若隨意兩個相鄰的 僅僅有一位二進位制數不同。則稱這樣的編碼為格雷碼。2位數的格雷碼序列 00 0 01 1 11 3 10 2 找規律 假設要求n位的格雷碼,先要求出n 1位的格雷碼。迴圈上一次格雷碼的每一位,都會生成兩個新的格雷碼 統計 1 出現的次數 假設為偶數 兩個...
序列生成 RNN對抗序列生成
摘要 證明了文字的對抗樣本可以干擾rnn的分類結果。介紹 兩種方法 the fast gradient sign method the forward derivative method 主要貢獻 形式化對抗樣本優化問題 將對抗擾動加到其他輸入中 評估了文字對抗樣本表現 2.關於迴圈神經網路 機器學...