算法——回溯算法
杨小帆_
沉下心来做技术
展开
-
LeetCode 17. 电话号码的字母组合
题目:17. 电话号码的字母组合类型:回溯算法给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce",原创 2019-02-02 21:01:03 · 456 阅读 · 0 评论 -
LeetCode 89. 格雷编码
题目:89. 格雷编码类型:回溯算法、公式格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2...原创 2019-02-08 09:47:31 · 339 阅读 · 0 评论 -
LeetCode 22. 括号生成
题目:22. 括号生成类型:回溯算法给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]解题思路:解题的思路比较简单,使用回溯算法和剪枝即可解决。代码: //0...原创 2019-02-08 09:38:30 · 133 阅读 · 0 评论 -
LeetCode 39. 组合总和
题目:39. 组合总和类型:回溯算法 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,...原创 2019-02-07 11:43:46 · 169 阅读 · 0 评论 -
LeetCode 216. 组合总和 III
题目:216. 组合总和 III类型:回溯算法找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。 解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1...原创 2019-02-07 11:35:10 · 410 阅读 · 0 评论 -
LeetCode 40. 组合总和 II
题目:40. 组合总和 II类型:回溯算法给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7...原创 2019-02-07 11:25:54 · 140 阅读 · 0 评论 -
LeetCode 90. 子集 II
题目:90. 子集 II类型:回溯算法给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]解题思路:这道题的解题思路和 78题是一样的,不同的是增加了一步去重操作,即当当前...原创 2019-02-07 11:07:21 · 146 阅读 · 0 评论 -
LeetCode 78. 子集
题目:78. 子集类型:回溯算法解题思路:解题思路即回溯算法,通过递归输入数组中的元素进行排序并插入结果数组即可,总体解法与 46题 和 47题都类似,不做赘述。代码: //4ms 超过100% vector<vector<int>> subsets(vector<int>& nums) { ...原创 2019-02-07 10:55:54 · 183 阅读 · 0 评论 -
LeetCode 77. 组合
题目:77. 组合类型:回溯算法给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]解题思路:解题的思想主要是应用回溯算法递归处理,比较简单不做过多赘述。代码: vect...原创 2019-02-07 10:40:23 · 134 阅读 · 0 评论 -
LeetCode 47. 全排列 II
题目:47. 全排列 II类型:回溯算法给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题思路:跟 46题的全排列基本思路是一致的,只不过多了一个去重的步骤。总体思想就是模拟手写,每次递归先确定当前待排序列的第一个数,然后通过递归对剩下的序列进行递归排序,去...原创 2019-02-07 10:11:26 · 282 阅读 · 0 评论 -
LeetCode 46. 全排列
题目:46. 全排列类型:回溯算法给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路:使用回溯算法,即递归思想,每次确定一个数字后对剩余的数字进行排列。代码: //8ms 超...原创 2019-02-06 21:09:13 · 147 阅读 · 0 评论 -
关于求解所有最长公共子序列的思路
没有最好的解法,只有更好的解法一、题目描述求取两个给定序列的最长子序列( 需要求解出所有的最长公共子序列 )。比如序列 X 为 ABCBDAB ,序列 Y 为 BDCABA,则其公共最长子序列之一为 BCBA( 可能不唯一 )。二、解题思路时隔几日,我又再次回到了这道题,如果看过我之前文章的朋友应该知道我前几天写过一篇关于求解最长公共子序列的文章,但是当时的要求就是只需求解...原创 2019-04-06 20:54:39 · 5934 阅读 · 3 评论