深度优先搜索(DFS)
刷题
UPC YR
这个作者很懒,什么都没留下…
展开
-
Leetcode 37 解数独
Leetcode 37 解数独问题重述就是平常玩的数独,其中空格部分用‘.’表示。要求把数独填满。思路我们在这题用到回溯法,比较好懂,我们先将每一行每一列每一个九宫出现的数字分别用三个二维数组记录下来。比如row[0][1]=1说明第一出现过1这个数字。然后每一行利用for循环从数字1到9尝试,只要这个数字没有出现过,就先填入继续下一行搜索;找完以后进行回溯。具体看代码,简单易懂。注:事实上对于数独类型的题,有很多进阶的搜索方法和剪枝策略可以提高速度,如启发式搜索。(有兴趣的佬们可以尝试一下,反原创 2021-02-03 11:44:10 · 139 阅读 · 0 评论 -
Leetcode 40 组合总和②
Leetcode 40 组合总和②问题重述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6原创 2021-02-03 11:41:53 · 192 阅读 · 0 评论 -
Leetcode 47 全排列②
Leetcode 47 全排列②问题重述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路本题是【46、全排列】的升级版,就是需要考虑重复数字。思路还是和46一样,用到回溯的思想。关键思想在这里。 if原创 2021-02-01 12:39:48 · 122 阅读 · 0 评论 -
Leetcode 46 全排列
Leetcode 46 全排列问题重述给定一个无重复数字的整数数组,求其所有的排列方式。输入:是一个一维整数数组,输出是一个二维数组,表示输入数组的所有排列方式。Input: [1,2,3]Output: [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]可以以任意顺序输出,只要包含了所有排列方式即可。思路怎样输出所有的排列方式呢?对于每一个当前位置 i,我们可以将其于之后的任意位置交换,然后继续处理位置 i+1,直到处理到最后一位原创 2021-02-01 10:23:09 · 137 阅读 · 0 评论 -
Leetcode 130 被围绕的区域
Leetcode 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解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终原创 2021-01-29 11:53:44 · 129 阅读 · 0 评论 -
Leetcode 937 最短的桥
Leetcode 937 最短的桥问题重述在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。)示例 1:输入:[[0,1],[1,0]] 输出:1示例 2:输入:[[0,1,0],[0,0,0],[0,0,1]] 输出:2就是1表示陆地,0是海洋,1连在一起为一整块陆地,一共有两片陆地,问两片陆地的最短距离。思路通过第一次遍原创 2021-01-29 11:01:42 · 154 阅读 · 0 评论 -
Leetcode 51 N皇后
Leetcode 51 N皇后问题重述n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q…","…Q",“Q…”,"…Q."],["…Q.",“Q…”,"…Q",".Q…"]]解释:如上图所示,4 皇后问题存在两个不同的解法。思路原创 2021-01-27 21:32:28 · 111 阅读 · 0 评论 -
Leetcode 79 单词搜索
Leetcode 79 单词搜索问题重述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word原创 2021-01-27 21:30:50 · 101 阅读 · 0 评论 -
Leetcode 417 太平洋大西洋水流问题
Leetcode 417 太平洋大西洋水流问题问题重述给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要 m 和 n 都小于150示例:给定下面的 5x5 矩阵:太平洋~ ~ ~ ~ ~~原创 2021-01-24 22:13:23 · 139 阅读 · 0 评论 -
Leetcode 547 省份数量
Leetcode 547 省份数量问题重述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量原创 2021-01-23 23:01:50 · 100 阅读 · 0 评论 -
Leetcode 695 岛屿的最大面积
Leetcode 695 岛屿的最大面积问题重述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0原创 2021-01-23 22:57:32 · 81 阅读 · 0 评论