Leetcode|DFS|130. 被围绕的区域
1 DFS
- 遍历棋盘边界,将边界对应的所有
O
进行dfs遍历成#
- 遍历棋盘,将所有中间
O
遍历成X
- 遍历棋盘,将所有中间
#
恢复成O
class Solution {public:int n, m;void dfs(vector<vector<char>>& board, int x, int y) {if (x < 0 || y < 0 || x >= n || y >= m || board[x][y] != 'O') return;board[x][y] = '#';dfs(board, x + 1, y);dfs(board, x - 1, y);dfs(board, x, y + 1);dfs(board, x, y - 1);}void solve(vector<vector<char>>& board) {n = board.size();m = board[0].size();// 第1行和最后1行中的O进行dfs变成其他图标for (int i = 0; i < n; i++) {if (board[i][0] == 'O') dfs(board, i, 0);if (board[i][m - 1] == 'O') dfs(board, i, m - 1);}// 第1列和最后1列中的O进行dfs变成其他图标for (int i = 0; i < m; i++) {if (board[0][i] == 'O') dfs(board, 0, i);if (board[n - 1][i] == 'O') dfs(board, n - 1, i);}// 将所有O变成X(可优化i从1开始遍历)for (int i = 1; i < n - 1; i++)for (int j = 1; j < m - 1; j++) if (board[i][j] == 'O') board[i][j] = 'X';// 将所有#恢复成Ofor (int i = 0; i < n; i++)for (int j = 0; j < m; j++) if (board[i][j] == '#') board[i][j] = 'O'; }
};
Leetcode|DFS|130. 被围绕的区域相关推荐
- 【LeetCode】130.被围绕的区域
一.题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 二.示例 示例: X X X X X O O ...
- 130. 被围绕的区域
链接:130. 被围绕的区域 题解:深度优先搜索 class Solution { public:vector<vector<int>> direction{{1, 0},{- ...
- Leetcode-搜索-130.被围绕的区域(中等)
130. 被围绕的区域 题目如下 解题思路 dfs-c++代码(深搜) bfs-c++代码(广搜) 提交对比 题目如下 解题思路 不被包围的肯定有一边在边界,所以我们从边界遍历,边界遍历可以碰到的0是 ...
- 10.13(129. 求根到叶子节点数字之和 130. 被围绕的区域)
129. 求根到叶子节点数字之和(通过) 思路:递归,前序遍历的应用 效率:100% 程序代码: /*** Definition for a binary tree node.* struct Tre ...
- LeetCode 130. 被围绕的区域(图的BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' ...
- LeetCode 130 被围绕的区域
题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O).找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 题解 没有被'X'包围的区域一定在边上,可以从四周 ...
- 130.被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- leetcode 130. Surrounded Regions | 130. 被围绕的区域(DFS递归“感染“思路)
题目 https://leetcode.com/problems/surrounded-regions/ 题解 Related Topics 说是并查集问题,然而我并没有用到. 带有 visited ...
- Leetcode 130. 被围绕的区域 解题思路及C++实现
解题思路: 这是一个典型的深度优先搜索问题,在程序处理过程中,将未被'X'包围的'O'标记为符号'*'. 先遍历数组边界上的字符'O',将其标记为'*',然后对出现'*'的位置,通过递归dfs,遍历其 ...
- Leetcode 130. 被围绕的区域 (每日一题 20210720 同类型题)
'O' 相连的 'O' 最终都会被填充为 'X'.如果两个元素在水平或垂直方向相邻,则称它们是"相连"的. 示例 2:输入:board = [["X"]] 输出 ...
最新文章
- [译]在启用浏览器功能的INFOPATH表单中实现基于SQL SERVER的多级联动的下拉式列表...
- 测试C#代码执行时间
- 苹果手机信号是哪个服务器,苹果手机信号差是网络问题还是手机问题
- SVN Could not open the requested SVN filesystem解决办法
- NET-TreeView控件说明
- my batis plus 小数没有0_北师大版五年级第一单元小数除法知识点总结及易错题解析(1)...
- MATLAB官方机器学习入门教程
- 基于JAVA在线招生系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 万能密码 php,PHP 万能密码
- pxc部署和配置详解
- python支付宝二维码支付源代码
- MySQL5.6 GTID
- 华为这个广告,我愿一辈子不买苹果!
- echarts之toolbox-x,y
- Day1ps设计基础作业第一章第二章
- PS一次性导出多倍图@1x、@2x、@3x
- 用软笔,写慢字:键盘时代如何拯救书法?
- 鸿蒙系统名字来历,鸿蒙系统名字含义_华为鸿蒙操作系统自己研发吗
- win7计算机收藏夹位置,收藏夹位置,教您ie浏览器收藏夹的位置在哪
- colaboratory报错:CUDA status Error: file: ./src/blas_kernels.cu : ()