回溯
每天学一点!
时刻保持对知识的热情!
展开
-
46. 全排列
题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 回溯思想。因为没有重复数字所以比较简单。 代码 class Solution { public: vector<ve...原创 2019-11-16 09:05:45 · 76 阅读 · 0 评论 -
39. 组合总和
题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1: 输入: candidates = [2,3,6,7], target = 7, 所求解集...原创 2019-11-14 19:30:30 · 91 阅读 · 0 评论 -
93. 复原IP地址
题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 思路 首先要了解IP地址的定义。其是由三个'.'号分割的4个整数,这四个整数的大小不超过255。并且对于其中一个数字如果最高为0,则这个分割数为0,不能为025、00等。...原创 2019-09-19 10:31:38 · 196 阅读 · 0 评论 -
矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...原创 2019-03-30 14:28:14 · 126 阅读 · 0 评论 -
52. N皇后 II
题目描述 n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数n,返回n皇后不同的解决方案的数量。 示例 输入: 4 输出: 2 解释: 4 皇后问题存在如下两个不同的解法。 [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ...原创 2019-08-06 12:23:54 · 104 阅读 · 0 评论 -
51. N皇后
题目描述 n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的n皇后问题的解决方案。 每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 示例 输入: 4 输出: [ [".Q..", // 解法 1...原创 2019-08-06 11:54:21 · 170 阅读 · 0 评论 -
22. 括号生成
题目描述 给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出n=3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 思路 回溯思想。因为一对括号必定是()。 从左到右 "(" 括号的数量必定是大于等于 左 “)”括号的。用left 和 right...原创 2019-05-17 12:35:02 · 108 阅读 · 0 评论 -
40. 组合总和 II
题目描述 给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。 candidates中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 示例1: 输入: candidates =[10,1,2,7,6,1,5], targ...原创 2019-08-05 21:35:57 · 90 阅读 · 0 评论 -
90. 子集 II
题目描述 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: [1,2,2] 输出: [[2], [1],[1,2,2],[2,2], [1,2], [] ] 思路 回溯法,用set避免重复的情况。 比如[1 4 1 4 4]。 除了【1 4 4】 和 【1 4 4】这种每一位上都相同的...原创 2019-08-05 16:28:52 · 137 阅读 · 0 评论 -
78. 子集
题目描述 给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: nums = [1,2,3] 输出: [[3], [1], [2], [1,2,3], [1,3], [2,3], [1,2],[]] 思路 回溯法。对于每一个数,只有两种状态,选和不选。因为题目中元素是不重复的,所以这种方法不会重复。...原创 2019-08-05 15:54:20 · 94 阅读 · 0 评论 -
字符串的排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 思路 回溯的思想。这题,关键是有字符重复,所以要去重复。 代码 class Solution {...原创 2019-07-23 08:32:10 · 106 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路 回溯思想。注意是从根节点到叶结点的序列和。 代码 /* struct TreeNode { int val; struct TreeNode *left...原创 2019-03-26 09:25:20 · 87 阅读 · 0 评论