摘要:
题目: 格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。 思路: 想了一下午回溯的思路没有成功,之后想到补上。 格雷码想到了当 阅读全文
摘要:
题目: 组合:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 思路: 回溯算法的框架。 程序: class Solution: def combine(self, n: int, k: int) -> List[List[int]]: def backtrack(in 阅读全文
摘要:
题目: 第k个排列:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 思路: 回溯方法会超时, 阅读全文
摘要:
题目: 全排列 II:给定一个可包含重复数字的序列,返回所有不重复的全排列。 思路: 在第46题的基础上,增加了判断是否是重复的判断,借助findOut来判断新的数是否重复的使用。 程序: class Solution: def permuteUnique(self, nums: List[int] 阅读全文
摘要:
题目: 全排列:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 思路: 使用回溯算法的模板。 程序: class Solution: def permute(self, nums: List[int]) -> List[List[int]]: result = [] auxiliary = 阅读全文
摘要:
题目: 括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 思路: 使用回溯算法,使用回溯算法的模板可以很快的求解。 程序: class Solution: def generateParenthesis(self, n: int) -> Lis 阅读全文