89. Gray Code

2018-06-28  本文已影响0人  April63

这题做的很虚, 嗯,居然过了

class Solution(object):
    def grayCode(self, n):
        """
        :type n: int
        :rtype: List[int]
        """
        curr = [0 for i in range(n)]
        res = [0]
        bi = [curr]
        self.dfs(curr, n, res, bi)
        return res
    def dfs(self,curr, n, res, bi):
        if len(res) == pow(2,n):
            return
        for i in range(n)[::-1]:
            temp = curr[:i] + [1-curr[i]] + curr[i+1:]
            if temp not in bi:
                bi.append(temp)
                res.append(self.bitoint(temp))
                self.dfs(temp, n, res, bi)
            
    def bitoint(self, temp):
        s = 0
        j = 1
        for i in range(len(temp))[::-1]:
            s += temp[i] * j
            j *= 2
        return s

题目中的一种做法的复现:

class Solution(object):
    def grayCode(self, n):
        """
        :type n: int
        :rtype: List[int]
        """
        res = [0]
        for i in range(n):
            size = len(res)
            for k in range(size)[::-1]:
                res.append(res[k] | (1<<i) )
        return res
            

打死我吧,打死我我可能会想出来这种办法

上一篇 下一篇

猜你喜欢

热点阅读