leetcode
凡人的进击之路
这个作者很懒,什么都没留下…
展开
-
64. 最小路径和
64. 最小路径和题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。题解本题采用动态规划的方法,设置dp[i][j]表示从左上角的点出发到点(i,j)路径上最小的和,由于题目规定每次只能向下或者向右移动一步,所以dp[i][j]就只与它上面和它原创 2020-11-21 13:40:12 · 97 阅读 · 0 评论 -
968. 监控二叉树
968. 监控二叉树题目描述给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。题解所有节点都有以下三种状态:等待被摄像头监控,不妨设为状态0已被监控,不妨设为状态1安装了摄像头,不妨设为状态2然后进行dfs代码//c++//运行时间:12ms,在所有 C++ 提交中击败了9原创 2020-11-21 13:39:41 · 64 阅读 · 0 评论 -
416. 分割等和子集
416. 分割等和子集题目描述给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.题解本题和0-1背包问题的思想差不多,但是也有一些区别,本题在初始化的时候是原创 2020-11-21 13:38:59 · 90 阅读 · 0 评论 -
343. 整数拆分
343. 整数拆分题目描述给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。题解采用动态规划求解,创建数组dp,dp[i]表示正整数i拆分后可得的最大乘积。对于正整数i,当i>=2时,可以进行拆分,假设拆为j和i-j,而i-j可以进行拆分,也可以不进行拆分,原创 2020-11-21 13:38:12 · 62 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
538. 把二叉搜索树转换为累加树题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。示例输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 13题解用反向的中序遍历原创 2020-11-21 13:37:42 · 47 阅读 · 0 评论 -
417. 太平洋大西洋水流问题
417. 太平洋大西洋水流问题题目描述给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要m 和 n 都小于150示例给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~ ~ ~原创 2020-11-21 13:36:45 · 188 阅读 · 0 评论 -
130. 被围绕的区域
130. 被围绕的区域题目给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X题解矩阵中的字符包含三种类型:X被X包围的O,要转换为X没有被包围的O可以在矩阵的最外层一圈进行dfs(O),这样它肯定是没有被包围的,并标记一下,比如转换为A原创 2020-11-21 13:36:16 · 96 阅读 · 0 评论 -
78.子集
78.子集题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。题解这类题的通用解法就是回溯,回溯算法的通用解法:res=[]def backtrack(nums,start,path)//(选择列表,选择开始位置,选择的路径) if 满足结束条件: res.add(path) return for 选择 in 选择列表 选择 backtrack(nums,start+1,原创 2020-11-21 13:35:10 · 74 阅读 · 0 评论 -
90. 子集 II
90. 子集 II题目描述给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。题解本题和子集这道题基本一样,只是会多加两步,排序和判断当前节点与前一个节点是否相等。代码class Solution { List<List<Integer>>res=new ArrayList<>(); public List<List<Integer>> subsetsWithD原创 2020-11-21 13:34:01 · 63 阅读 · 0 评论 -
529. 扫雷游戏
529. 扫雷游戏题目描述让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改原创 2020-11-21 13:32:04 · 182 阅读 · 0 评论 -
LeetCode130-被围绕的区域
130. 被围绕的区域题目给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X题解矩阵中的字符包含三种类型:X被X包围的O,要转换为X没有被包围的O可以在矩阵的最外层一圈进行dfs(O),这样它肯定是没有被包围的,并标记一下,比如转换为A原创 2020-09-21 16:05:28 · 151 阅读 · 0 评论 -
450. 删除二叉搜索树中的节点
题目描述给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。题解删除二叉树的节点, 如果root为空,直接return nullptr:否则,如果root->val=key,那么分为四种情况:root->left=null&原创 2020-09-18 14:15:14 · 116 阅读 · 0 评论