5 篇
DFS 专区
题目描述 给你一个 m x n 的矩阵 board,由 'X' 和 'O' 组成。将所有被 'X' 完全包围的 'O' 区域替换为 'X'。与棋盘边缘相连的 'O' 不算被围绕,不需要替换。 思路 正面找"被围绕的区域"不好判断,反过来找"安全的 'O'"更直接——只要一个 'O' 与边缘的 'O' 相连,它就一定不会
题目描述 给你无向连通图中一个节点的引用,返回该图的深拷贝。每个节点包含一个整数值 val 和邻居列表 Neighbors。 思路 深拷贝图的难点在于图可能有环——如果不加记录地递归,会无限循环。用一个 visited 哈希表把"原节点 → 克隆节点"的映射存起来,就能同时解决两个问题:避免重复访问,以及在处理邻居时直
题目描述 给你一个由 '1'(陆地)和 '0'(水)组成的二维网格,计算网格中岛屿的数量。岛屿被水包围,只能由水平或竖直方向相邻的陆地连接而成,网格四条边均视为水域。 思路 遍历整个网格,遇到 '1' 就说明找到了一座新的岛屿,答案加一,同时对这个格子发起 DFS,把它所能连通的所有陆地格子都标记为 '2'("插旗")
题目描述 共有 numCourses 门课程(编号 0 到 numCourses - 1),部分课程有先修要求:prerequisites[i] = [ai, bi] 表示学 ai 之前必须先学 bi。判断是否能完成所有课程的学习。 思路 把课程之间的先修关系建成有向图:bi → ai 表示 bi 是 ai 的前置。问
题目描述 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites,其中 prerequisites[i] = [ai, bi] 表示在选修课程 ai 前必须先选修 bi。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,只要返回