DFS
leetCode深度优先搜索题目
消灭猕猴桃
保持热爱,奔赴山海
展开
-
[leetCode]62. 不同路径
题目 链接:https://leetcode-cn.com/problems/unique-paths 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右原创 2020-11-17 18:40:29 · 114 阅读 · 0 评论 -
[leetCode]417. 太平洋大西洋水流问题
题目 链接:https://leetcode-cn.com/problems/pacific-atlantic-water-flow 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。 规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。 请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。 提示: 输出坐标的顺序不重要 m 和 n 都小于150 示例: 给定原创 2020-11-16 14:57:46 · 95 阅读 · 0 评论 -
[leetCode]130. 被围绕的区域
题目 链接:https://leetcode-cn.com/problems/surrounded-regions 给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。 找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例: 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 X X 解释: 被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充原创 2020-11-16 13:33:50 · 90 阅读 · 0 评论 -
[leetCode]547. 朋友圈
题目 链接:https://leetcode-cn.com/problems/friend-circles 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。 示例原创 2020-11-15 16:46:16 · 143 阅读 · 0 评论 -
[leetCode]200. 岛屿数量
dfs 遍历二维网格,如果网格值为“1”则以该网格为起点进行深度优先遍历,在搜索过程中值为1的网格都置为“0”。这样深度优先搜索的次数就是岛屿的数量。 class Solution { public int numIslands(char[][] grid) { int num = 0; int rows = grid.length; int cols = grid[0].length; for (int row = 0; row &.原创 2020-10-19 18:08:10 · 162 阅读 · 0 评论 -
[leetCode]695. 岛屿的最大面积
题目 链接:https://leetcode-cn.com/problems/max-area-of-island 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。) 示例 1: [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0原创 2020-11-15 10:02:52 · 68 阅读 · 0 评论 -
[leetCode]968. 监控二叉树
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { // 每个节点右三种状态:0.无覆盖 1.有摄像头 2.有覆盖 private final Integer .原创 2020-10-21 11:29:54 · 75 阅读 · 0 评论 -
[leetCode]679. 24 点游戏
回溯法 一共4个数字4种运算,可以通过回溯法遍历不同的可能性。 从4个数字中取出两个数字,并选择一种运算有 4*3=12种,将运算结果取代取出的两个数字等到3个数字 在剩下三个数字种取出两个数字并选择一种运算有 3*2 = 6种, 将运算结果取代取出的两个数字还剩2数字 剩下两个数字有两种不同的顺序,可选择一种运算 因此,一共有:124+64+2*4=9216种可能性。 回溯的具体做法是,使用一个列表存储目前的全部数字,每次从列表中选出 2 个数字,再选择一种运算操作,用计算得到的结果取代选出的 2 .原创 2020-10-20 10:41:18 · 193 阅读 · 0 评论