LeetCode 89. 格雷編碼

sunlanchang發表於2020-10-12

Description

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

給定一個代表編碼總位數的非負整數 n,列印其格雷編碼序列。即使有多個不同答案,你也只需要返回其中一種。

格雷編碼序列必須以 0 開頭。

示例 1:

輸入: 2
輸出: [0,1,3,2]
解釋:
00 - 0
01 - 1
11 - 3
10 - 2

對於給定的 n,其格雷編碼序列並不唯一。
例如,[0,2,3,1] 也是一個有效的格雷編碼序列。

00 - 0
10 - 2
11 - 3
01 - 1
示例 2:

輸入: 0
輸出: [0]
解釋: 我們定義格雷編碼序列必須以 0 開頭。
     給定編碼總位數為 n 的格雷編碼序列,其長度為 2n。當 n = 0 時,長度為 20 = 1。
     因此,當 n = 0 時,其格雷編碼序列為 [0]。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/gray-code
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

Solution

思路

class Solution:
    def grayCode(self, n: int) -> List[int]:
        res = [0]
        head = 1
        for i in range(n):
            tmp = []
            for j in range(len(res)-1,-1,-1):
                tmp.append(res[j]+head)
            res = res + tmp
            head = head << 1
        return res

相關文章