这题做的很虚, 嗯,居然过了
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
打死我吧,打死我我可能会想出来这种办法
网友评论