leetcode -- Gray Code -- 数学题
来源:互联网 发布:mac系统怎么远程控制 编辑:程序博客网 时间:2024/06/08 05:05
https://leetcode.com/problems/gray-code/
格雷码的生成方法。
思路1 数学方法
给定n,则总共有1
可以让i从0开始,每个code就是(i/2 )^ i 即,(i>>1)^i异或。跟0异或就是本身
class Solution: # @return a list of integers def grayCode(self, n): res=[] size=1<<n for i in range(size): res.append((i>>1)^i) return res
思路2
我想的是backtracking的办法,如果父节点为0,则先搜0再搜1;如果父节点为1,则先搜1再搜0。但是结果顺序不对。还没找出原因
class Solution(object): def convertBit(self, mylist): mylist.reverse() res = 0 for i,c in enumerate(mylist): res += 2 ** i * c return res def dfs(self, start, end, last_bit, subres, res): if start == end + 1: res.append(self.convertBit(subres[:])) return else: if last_bit == 0: subres[start] = 0 self.dfs(start + 1, end, 0, subres, res) subres[start] = 1 self.dfs(start + 1, end, 1, subres, res) else: subres[start] = 1 self.dfs(start + 1, end, 1, subres, res) subres[start] = 0 self.dfs(start + 1, end, 0, subres, res) def grayCode(self, n): """ :type n: int :rtype: List[int] """ if n == 0: return [0] subres = [0]*n res = [] self.dfs(0, n-1, 0, subres, res) return res
0 0
- leetcode -- Gray Code -- 数学题
- LeetCode: Gray Code
- [LeetCode] 格雷码(Gray Code)
- LeetCode Gray Code
- [Leetcode] Gray Code
- [LeetCode] Gray Code
- leetcode 112: Gray Code
- LeetCode Gray Code
- [leetCode] Gray Code
- [LeetCode]Gray Code
- Leetcode: Gray Code
- [leetcode]Gray Code
- LeetCode-Gray Code
- [leetcode] Gray Code
- LeetCode - Gray Code
- leetcode之Gray code
- LeetCode:Gray Code
- 【转载】【leetcode】Gray Code
- 从innodb中恢复数据
- 【凯子哥带你夯实应用层】新手必备的常用代码片段整理(一)
- Valid Sudoku
- Android学习之BroadcastReceiver
- mysql导入sql文件
- leetcode -- Gray Code -- 数学题
- PowerDesigner导入sql脚本生成物理模型
- redis 资料
- <LeetCode OJ> (1 / 15 / 16 / 18) NSum问题集合
- Android列表滑动冲突原因和解决方法
- 【凯子哥带你夯实应用层】新手必备的常用代码片段整理(二)
- 关于python的编解码(decode, encode)
- 利用委托自定义事件
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件