dfs
文章平均质量分 50
小桥落花流水
这个作者很懒,什么都没留下…
展开
-
491. 递增子序列
491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是[-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。基本思路: v.原创 2021-01-10 00:16:23 · 116 阅读 · 0 评论 -
301. 删除无效的括号
301. 删除无效的括号删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除(和)以外的字符。示例 1:输入: "()())()"输出: ["()()()", "(())()"]示例 2:输入: "(a)())()"输出: ["(a)()()", "(a())()"]示例 3:输入: ")("输出: [""]基本思路:BFS def isValid(str): ...原创 2020-12-16 18:04:12 · 111 阅读 · 0 评论 -
5619. 最小不兼容性
5619. 最小不兼容性给你一个整数数组nums 和一个整数k。你需要将这个数组划分到k个相同大小的子集中,使得同一个子集里面没有两个相同的元素。一个子集的 不兼容性是该子集里面最大值和最小值的差。请你返回将数组分成 k个子集后,各子集 不兼容性 的 和的 最小值,如果无法分成分成 k个子集,返回 -1。子集的定义是数组中一些数字的集合,对数字顺序没有要求。示例 1:输入:nums = [1,2,1,4], k = 2输出:4解释:最优的分配是...原创 2020-12-06 22:14:37 · 267 阅读 · 0 评论 -
394. 字符串解码
394. 字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。示例 1:输入:s = "3[a]2[bc]"输出:"aa...原创 2020-11-27 19:25:02 · 76 阅读 · 0 评论 -
312. 戳气球
312. 戳气球有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组nums中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得nums[left] * nums[i] * nums[right]个硬币。这里的left和right代表和i相邻的两个气球的序号。注意当你戳破了气球 i 后,气球left和气球right就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设nums[-1] = nums[n] = 1...原创 2020-11-19 18:41:10 · 79 阅读 · 0 评论 -
514. 自由之路
514. 自由之路电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串ring,表示刻在外环上的编码;给定另一个字符串key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使key的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完key中的所有字符。旋转...原创 2020-11-18 17:53:34 · 116 阅读 · 0 评论 -
463. 岛屿的周长
463. 岛屿的周长给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示例 :输入:[[0,1,0,0],[1,1,1,0],[0,1,0,0...原创 2020-10-30 13:35:42 · 82 阅读 · 0 评论 -
113. 路径总和 II
113. 路径总和 II给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<int>> ans; vector<int> one_ans; dfs(root,sum,ans,one_ans); re.原创 2020-09-26 10:37:36 · 46 阅读 · 0 评论 -
543.二叉树的直径
543.二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。基本思路:任意两个节点的路径的最大值,就是求以分别以各个节点为根节点的最大直径,可以dfs求解,其中,depth=节点数-1; int maxDepth=0; int diameterOfBinaryTree(TreeNode* root) { if(!root) //空树和只有一个根节点的直径都为0 ..原创 2020-09-24 22:39:46 · 59 阅读 · 0 评论 -
2020-09-24
968.监控二叉树给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 int ans=0; int minCameraCover(TreeNode* root) { if(dfs(root)==0) ans++; return ans; } //0:该节点无覆盖 //1:本节点有摄像头 //.原创 2020-09-24 20:37:10 · 142 阅读 · 0 评论 -
617.合并二叉树
617.合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-binary-trees著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 Tree..原创 2020-09-23 16:48:46 · 120 阅读 · 0 评论