surrounded-regions
来源:互联网 发布:手机视频分享网站源码 编辑:程序博客网 时间:2024/06/11 01:51
surrounded-regions
题目描述
Given a 2D board containing’X’and’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
思想
题目看了老半天………..
对四个边界DFS, 找到与其相连的‘O’, 找到后将其变为其他字符作为访问标记
这样可以节省空间,使得内存不会超限
还有记住 dfs的时候, 能用引用就用引用否则会超时
代码
class Solution {public: void solve(vector<vector<char>> &board) { if(board.size() == 0) return; for (int i = 0; i < board.size(); ++i) { for (int j = 0; j < board[i].size(); ++j) { if ((i == 0 || i == board.size() - 1 || j == 0 || j == board[i].size() - 1) && board[i][j] == 'O') dfs(i, j, board); } } for (int i = 0; i < board.size(); ++i) { for (int j = 0; j < board[i].size(); ++j) { if (board[i][j] == 'O') board[i][j] = 'X'; if (board[i][j] == '$') board[i][j] = 'O'; } } } void dfs(int x, int y, vector<vector<char> > &board) { board[x][y] = '$'; if(x-1 >= 0 && board[x-1][y] == 'O' ) { dfs(x-1, y, board); } if(x+1 < board.size() && board[x+1][y] == 'O' ) { dfs(x+1, y, board); } if(y-1 >= 0 && board[x][y-1] == 'O' ) { dfs(x, y-1, board); } if(y+1 < board[x].size() && board[x][y+1] == 'O' ) { dfs(x, y+1, board); } }};
阅读全文
0 0
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- 基础博弈【理解】
- js页面传参
- configuration
- 横竖屏切换时候Activity的生命周期的总结
- ios调用相机,info.plist
- surrounded-regions
- opengl 原理介绍
- Oracle游标
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- react入门之使用webpack搭配环境(一)
- 屏幕旋转
- laravel查询得到的数据(为对象object)无法进行数组循环遍历,而且不能用数组方式访问和查看的原因以及解决方法
- 问题记录:在HLS中使用矩阵乘法
- java和android中让多个runnable按顺序依次执行