![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度优先搜索
文章平均质量分 91
SeeDoubleU
这个作者很懒,什么都没留下…
展开
-
深度优先搜索算法总结
文章目录深度优先搜索能够处理的问题代码注意事项时间复杂度分析题目汇总深度优先搜索能够处理的问题宽度优先搜索的对象一般是二叉树、图,使用深度优先搜索的情况有以下三种:寻找所有路径的问题。寻找所有排列的问题。寻找所有组合的问题。代码注意事项宽度优先搜索需要用到数据结构stack(栈),代码要点如下:深度优先搜索一般是用递归来实现的,需要明确递归的三要素。递归的定义、拆解和出口。根据题意判断对原序列是否需要提前排序。对于需要去除重复的题,判断是否可以在原序列中先去重。原创 2022-04-26 23:41:02 · 3031 阅读 · 0 评论 -
41 N皇后(N-Queens)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码1 题目题目:N皇后(N-Queens)描述:N皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线)。给定一个整数n,返回所有不同的N皇后问题的解决方案。每个解决方案包含一个明确的N皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。lintcode题号——33,难度——medium样例1:输入:n = 1输出:[["Q"]原创 2022-04-26 00:56:06 · 207 阅读 · 0 评论 -
40 全排列II(Permutations II)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码4 另解4.1 交换法1 题目题目:全排列II(Permutations II)描述:给出一个具有重复数字的列表,找出列表所有不同的排列。lintcode题号——16,难度——medium样例1:输入:nums = [1,1] 输出:[ [1,1] ] 解释:[1,1]的不同排列只有[1,1]。样例2:输入:nums = [1,2,2] 输出:[ [1,2,2],原创 2022-04-26 00:55:08 · 284 阅读 · 0 评论 -
39 全排列(Permutations)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码4 另解4.1 交换法4.2 插空法1 题目题目:全排列(Permutations)描述:给定一个数字列表,返回其所有可能的排列。假设没有重复的数字。lintcode题号——15,难度——medium样例1:输入:列表 = [1]输出:[ [1]]样例2:输入:列表 = [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1]原创 2022-04-26 00:53:11 · 503 阅读 · 0 评论 -
38 分割回文串(Palindrome Partitioning)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:分割回文串(Palindrome Partitioning)描述:给定字符串 s,需要将它分割成一些子串,使得每个子串都是回文串。返回所有可能的分割方案。不同的方案之间的顺序可以是任意的。每种分割方案中的每个子串都必须是 s 中连续的一段。lintcode题号——136,难度——medium样例1:输入: "a"输出: [["a"]]解释: 字符串里只有一个字符, 也就只有一种分割方原创 2022-04-26 00:52:23 · 357 阅读 · 0 评论 -
37 数字组合II(Combination Sum II)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码1 题目题目:数字组合II(Combination Sum II)描述:给定一个数组 num 和一个整数 target。 找到 num 中所有的数字之和为 target 的组合。在同一个组合中, num 中的每一个数字仅能被使用一次。所有数值 (包括 target ) 都是正整数。返回的每一个组合内的数字必须是非降序的。返回的所有组合之间可以是任意顺序。解集不能包含重复的组合。lintco原创 2022-04-26 00:50:43 · 209 阅读 · 0 评论 -
36 数字组合(Combination Sum)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码1 题目题目:数字组合(Combination Sum)描述:给定一个候选数字的集合 candidates 和一个目标值 target。 找到 candidates 中所有的和为 target 的组合。在同一个组合中, candidates 中的某个数字出现次数不限。所有数值 (包括 target ) 都是正整数.返回的每一个组合内的数字必须是非降序的.返回的所有组合之间可以是任意顺序.解集不能包原创 2022-04-26 00:48:35 · 347 阅读 · 0 评论 -
35 子集II(Subsets II)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码1 题目题目:子集II(Subsets II)描述:给定一个可能具有重复数字的列表,返回其所有可能的子集。子集中的每个元素都是非降序的两个子集间的顺序是无关紧要的解集中不能包含重复子集lintcode题号——18,难度——medium样例1:输入:nums = [0]输出:[ [], [0]]解释:[0]的子集只有[]和[0]。样例2:输入:nums = [1,2原创 2022-04-26 00:47:24 · 233 阅读 · 0 评论 -
34 子集(Subsets)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.3 时间复杂度2.4 空间复杂度3 源码1 题目题目:子集(Subsets)描述:给定一个含不同整数的集合,返回其所有的子集。子集中的元素不能以降序排列,解集不能包含重复的子集。lintcode题号——17,难度——medium样例1:输入:nums = [0] 输出:[ [], [0] ] 解释:[0]的子集只有[]和[0]。样例2:输入:nums = [1,2,3] 输出:[ [3], [原创 2022-04-26 00:44:31 · 415 阅读 · 0 评论