130. Surrounded Regions
来源:互联网 发布:数据库pdforacle网盘 编辑:程序博客网 时间:2024/05/01 11:06
Given a 2D board containing 'X'
and 'O'
(the letter O), capture all regions surrounded by 'X'
.
A region is captured by flipping all 'O'
s into 'X'
s in that surrounded region.
For example,
X X X XX O O XX X O XX O X X
After running your function, the board should be:
X X X XX X X XX X X XX O X X
题目要求将被‘X‘围住的’O‘区域中的‘O‘全改成‘X‘。观察发现如果一块‘O‘区域能延伸到边缘则表示没有没围住,所以可以从边缘的‘O‘开始做dfs,找出包含该‘O‘点的区域,这些区域是不用变成‘X‘的,为了与其它的‘O‘区别开来,先把这些’O‘改成‘Q‘。最后对二维表进行遍历,将‘O‘改成‘X‘,’Q‘改称’O‘。
代码:
class Solution{public:void solve(vector<vector<char> >& board) {m = board.size();if(m == 0) return;n = board[0].size();if(n == 0) return;for(int i = 0; i < m; ++i){dfs(board, i, 0);dfs(board, i, n - 1);}for(int j = 1; j < n - 1; ++j){dfs(board, 0, j);dfs(board, m - 1, j);}for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){if(board[i][j] == 'O') board[i][j] = 'X';else if(board[i][j] == 'Q') board[i][j] = 'O';}}}private:int m, n;void dfs(vector<vector<char> >& board, int i, int j){if(board[i][j] != 'O') return;board[i][j] = 'Q';if(i > 1 && board[i-1][j] == 'O') dfs(board, i-1, j);if(i < m - 2 && board[i+1][j] == 'O') dfs(board, i+1, j);if(j > 1 && board[i][j-1] == 'O') dfs(board, i, j-1);if(j < n - 2 && board[i][j+1] == 'O') dfs(board, i, j+1);}};
0 0
- [LeetCode]130.Surrounded Regions
- LeetCode 130. Surrounded Regions
- [leetcode] 130.Surrounded Regions
- 130. Surrounded Regions
- Leetcode 130. Surrounded Regions
- 130. Surrounded Regions
- 130. Surrounded Regions
- leetcode 130. Surrounded Regions
- leetcode 130. Surrounded Regions
- LeetCode 130. Surrounded Regions
- 130. Surrounded Regions
- [LeetCode]130. Surrounded Regions
- LeetCode 130. Surrounded Regions
- 130. Surrounded Regions
- LeetCode *** 130. Surrounded Regions
- 130. Surrounded Regions
- Leetcode 130. Surrounded Regions
- [leetcode] 130. Surrounded Regions
- g2o库文件已上传
- 为什么年轻人越来越反感「亲戚」这群人?
- 1px像素的实现
- 老人是真饿了
- 算法训练 大小写转换
- 130. Surrounded Regions
- c++和c的头文件区分
- 编写更好的 Java 单元测试的 7 个技巧
- 求极限 泰勒公式
- c#调用DLL
- 移动端如何真正实现1像素border
- Tomcat进程被系统终止问题定位
- 总结JavaScript基础的思维导图——持续更新
- hashCode()方法