深度优先搜索(dfs)
文章平均质量分 60
ggaoda
这个作者很懒,什么都没留下…
展开
-
leetcode-37.解数独
深度优先搜索(dfs)回溯法题目详情编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:1.数字 1-9 在每一行只能出现一次。2.数字 1-9 在每一列只能出现一次。3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",原创 2022-04-18 09:46:15 · 150 阅读 · 0 评论 -
leetcode-47.全排列 II
深度优先搜索(dfs)回溯法题目详情给定一个可包含重复数字的序列 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]]先参考:无重复数字的全排列题:leetcode-46.全排列本题和46的区别,需要有一个判断能否swap的函数,原创 2022-04-16 16:43:56 · 91 阅读 · 0 评论 -
leetcode-40.组合总和 II
深度优先搜索(dfs)回溯法题目详情给你一个大小为m x n的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。示例1:输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0原创 2022-04-16 15:54:40 · 525 阅读 · 0 评论 -
leetcode-39.组合总和
深度优先搜索(dfs)回溯法题目详情给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例1:输入:candidates = [原创 2022-04-16 15:29:02 · 315 阅读 · 0 评论 -
leetcode-257.二叉树的所有路径
深度优先搜索(dfs)回溯法题目详情给你一个二叉树的根节点root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例1:输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:root = [1]输出:["1"]我的代码:代码中回溯是隐式存在的,因为dfs的参数中path是string而不是引用类型,从而每次调用dfs,用的不是同一个path,而是一次次的副本,比如1原创 2022-04-14 21:47:28 · 447 阅读 · 0 评论 -
leetcode-130.被围绕的区域
深度优先搜索(dfs)题目详情给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被'X'围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例1:输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]输出:[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O",原创 2022-04-14 17:22:11 · 129 阅读 · 0 评论 -
leetcode-126.单词接龙 II
深度优先搜索(dfs)广度优先搜索(bfs)回溯法题目详情按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> ... -> sk 这样的单词序列,并满足:1.每对相邻的单词之间仅有单个字母不同。2.转换过程中的每个单词 si(1 <= i <= k)必须是字典 wordList 中的单词。注意,beginWord 不必是字典 word原创 2022-04-14 16:47:09 · 152 阅读 · 0 评论 -
leetcode-934.最短的桥
深度优先搜索(dfs)广度优先搜索(bfs)题目详情在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1 。)题意理解:示例一:填了这个海0就能让两个岛屿1相连示例二:填了这两个海0就能让两个岛屿1相连示例三:这个示例三是一圈1,一圈1就是一个岛屿,中间独立的1又是另一个,只需填补一个0示例1:输入:A = [[0,原创 2022-04-12 11:52:39 · 1056 阅读 · 0 评论 -
leetcode-51. N 皇后
深度优先搜索(dfs)回溯算法题目详情n 皇后问题 研究的是如何将 n 个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中'Q' 和 '.'分别代表了皇后和空位。示例1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两原创 2022-04-11 10:42:03 · 561 阅读 · 0 评论 -
leetcode-79. 单词搜索
深度优先搜索(dfs)回溯算法题目详情给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "原创 2022-04-11 09:04:20 · 99 阅读 · 0 评论 -
leetcode-77.组合
深度优先搜索(dfs)回溯算法题目详情给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例2:输入:n = 1, k = 1输出:[[1]]leetcode第46道排列是同一类题:leetcode-46.全排列类似于排列问题,我们也可以进行回溯。排列回原创 2022-04-10 15:38:21 · 96 阅读 · 0 评论 -
leetcode-46.全排列
深度优先搜索(dfs)回溯算法题目详情给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例3:输入:nums = [1]输出:[[1]]我的代码:这道题其实就是一个树形结构,每次遍历到叶子的时候,即dfs到原创 2022-04-10 15:14:53 · 737 阅读 · 0 评论 -
leetcode-417.太平洋大西洋水流问题
深度优先搜索(dfs)题目详情有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋原创 2022-04-09 16:31:40 · 320 阅读 · 0 评论 -
leetcode- 547.省份数量
深度优先搜索(dfs)题目详情有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第i个城市和第j个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例1:原创 2022-04-09 15:29:29 · 531 阅读 · 0 评论 -
leetcode-695. 岛屿的最大面积
深度优先搜索(dfs)题目详情给你一个大小为m x n的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。示例1:输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,原创 2022-04-09 10:40:42 · 211 阅读 · 0 评论