
DFS
包括常规递归,递归+回溯,图论DFS
花飞雨追
梦想不是浮躁,而是沉淀和积累。
展开
-
Leecode 472 连接词
题目给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串。解题思路 字典树+DFS。这里我们定义非连接词为 连接子串 。 首先对于连接词,其长度必定比每一个连接字串的长度要长。对于这个题,我们可以先按照长度的升序,对所有字符串进行排序。对于排完序后的字符串,第 i 个字符串如果是连接词,那么其连接子串必定在前 i - 1 个字符串中。我们可以构建一个实时更新的字典树,我们希望把所有原创 2021-12-28 16:02:08 · 273 阅读 · 0 评论 -
Leetcode 1609 奇偶树
题目如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。解题思路 BFS和DFS都可以写,DFS有递归会涉及到重复遍历的过程,BFS的优势就体现出来了。但这里只贴了DF原创 2021-12-25 13:28:09 · 197 阅读 · 0 评论 -
Leetcode 851 喧闹和富有
题目有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为 x 的人简称为 "person x "。给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱。另给你一个整数数组 quiet ,其中 quiet[i] 是 person i原创 2021-12-16 09:31:23 · 119 阅读 · 0 评论 -
Leetcode 78 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。原创 2021-12-02 11:42:35 · 201 阅读 · 0 评论 -
Leetcode 77 组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。原创 2021-12-01 11:48:42 · 109 阅读 · 0 评论 -
Leetcode 54 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。原创 2021-11-29 10:07:19 · 271 阅读 · 0 评论 -
Leetcode 22 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 **有效的 **括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。原创 2021-11-26 10:25:56 · 187 阅读 · 0 评论 -
Leetcode 700 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。原创 2021-11-26 09:44:34 · 317 阅读 · 0 评论 -
Leetcode 40 组合总数II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。原创 2021-11-25 11:14:04 · 226 阅读 · 0 评论 -
前中后序遍历的递归与非递归版本
前序遍历 Leetcode 144 中序遍历 Leetcode 94 后序遍历 Leetcode 145原创 2021-11-07 16:39:53 · 117 阅读 · 0 评论 -
Leetcode 100 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。原创 2021-11-09 13:28:38 · 477 阅读 · 0 评论 -
Leetcode 98 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2021-11-11 10:00:35 · 1836 阅读 · 0 评论 -
Leetcode 110 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树*每个节点 *的左右两个子树的高度差的绝对值不超过 1 。原创 2021-11-12 10:54:26 · 2231 阅读 · 0 评论 -
Leetcode 397 整数替换
给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?原创 2021-11-19 09:42:07 · 221 阅读 · 0 评论 -
Leetcode 559 N叉树的最大深度
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。原创 2021-11-22 09:42:32 · 296 阅读 · 0 评论 -
Leetcode 46 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。原创 2021-11-22 10:36:57 · 328 阅读 · 0 评论 -
Leetcode 47 全排列II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。原创 2021-11-22 10:56:02 · 243 阅读 · 0 评论 -
Leetcode 39 组合总和
给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。原创 2021-11-25 10:32:50 · 152 阅读 · 0 评论