Leetcode 130. Surrounded Regions
2016-06-29 20:14
155 查看
首先遍历矩阵四边的每个‘O',然后对于每个’O‘进行深搜,寻找每个相互连接的’O‘并且赋值为’e'。
遍历矩阵的每个元素,将‘O'改为’X‘,将’e‘改为’O‘。
遍历矩阵的每个元素,将‘O'改为’X‘,将’e‘改为’O‘。
class Solution{ public: void bfs(vector<vector<char>> &board, int r, int c) { board[r][c] = 'e'; if (r-1 >= 0 && board[r-1][c] == 'O') { bfs(board, r-1, c); } if (r + 1 <= board.size() - 1 && board[r + 1][c] == 'O') { bfs(board, r + 1, c); } if (c - 1 >= 0 && board[r][c - 1] == 'O') { bfs(board, r, c - 1); } if (c + 1 <= board[0].size() - 2 && board[r][c + 1] == 'O') { bfs(board, r, c + 1); } } void solve(vector<vector<char>> &board) { if (board.size() == 0 || board[0].size() == 0) return; else if (board.size() <= 2 || board[0].size() <= 2) return; else { for (int i = 0; i < board[0].size(); i++) { if (board[0][i] == 'O') bfs(board, 0, i); if (board[board.size() - 1][i] == 'O') bfs(board, board.size() - 1, i); } for (int i = 0; i < board.size(); i++) { if (board[i][0] == 'O') bfs(board, i, 0); if (board[i][board[0].size()- 1] == 'O') bfs(board, i, board[0].size() - 1); } for (int i = 0; i < board.size(); i++) { for (int j = 0; j < board[0].size(); j++) { if (board[i][j] == 'e') { board[i][j] = 'O'; } else { board[i][j] = 'X'; } } } } } };
相关文章推荐
- c++多重继承
- tomcat线上更新后台管理程序代码
- 技术至上
- SpringMVC入门-第一节:简介
- windbg+网线双机调试内核
- [51CTO学院三周年]+<<一个巴士阿叔和Linux不得不說的故事>>
- 树莓派GPIO控制--python篇
- 获得打气筒的三种方式,以及ListView的使用与优化
- 单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式
- std::function用法
- Android 6.0编译问题
- 1.逐帧动画shader
- CEF源码编译
- Android Studio插件整理
- c++多态性
- 远程库的使用
- 图像轮廓提取关键函数
- Java 反射调用动态方法
- Gibbs Sampler
- Xml解析pull