[leetcode]Surrounded Regions
来源:互联网 发布:落叶能知易水寒下句 编辑:程序博客网 时间:2024/05/20 18:00
题目描述:
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
题目分析:
首先找到从四个边界开始寻找O,将其进行标记。标记完后,对于剩余的的O就将其变为X,标记的进行还原即可。
代码:
class Solution {public: void solve(vector<vector<char>> &board) { if(board.size()==0)return; int row=board.size(); int col=board[0].size(); //up for(int i=0;i<col;i++){ if(board[0][i]=='O'){ bfs(board,0,i); } } //right for(int i=0;i<row;i++){ if(board[i][col-1]=='O'){ bfs(board,i,col-1); } } //down for(int i=0;i<col;i++){ if(board[row-1][i]=='O'){ bfs(board,row-1,i); } } //left for(int i=0;i<row;i++){ if(board[i][0]=='O'){ bfs(board,i,0); } } //modify for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ if(board[i][j]=='+'){ board[i][j]='O'; } else if(board[i][j]=='O'){ board[i][j]='X'; } } } } //search bounds void bfs(vector<vector<char>> &board, int i, int j) { queue<int> q; int col=board[0].size(); visit(board,i,j,q); while(!q.empty()){ int cur=q.front(); q.pop(); int x=cur/col; int y=cur%col; visit(board,x-1,y,q); visit(board,x,y-1,q); visit(board,x+1,y,q); visit(board,x,y+1,q); }} void visit(vector<vector<char>> &board, int i, int j, queue<int> &q) { int m = board.size(); int n = board[0].size(); if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] != 'O') return; board[i][j] = '+'; q.push(i * n + j); }};
0 0
- LeetCode : Surrounded Regions
- [leetcode] Surrounded Regions
- leetcode 128: Surrounded Regions
- LeetCode 39: Surrounded Regions
- 【leetcode】Surrounded Regions
- LeetCode - Surrounded Regions
- LeetCode之Surrounded Regions
- leetcode:Surrounded Regions
- [LeetCode]Surrounded Regions
- LeetCode - Surrounded Regions
- [Leetcode]Surrounded Regions
- Leetcode Surrounded Regions
- [leetcode]Surrounded Regions
- leetcode Surrounded Regions
- Leetcode: Surrounded Regions
- LeetCode-Surrounded Regions
- [leetcode] Surrounded Regions
- leetcode Surrounded Regions 详解
- ORACLE 存储过程被锁,编译不了问题
- Android动画之Interpolator插补器
- jQuery和Prototype的兼容性和冲突的五种解决方法
- Linux内核驱动GPIO的使用
- ArcGIS 教程:Spatial Analyst扩展模块中的分析
- [leetcode]Surrounded Regions
- iOS 实现微信扫一扫样式
- 我的第一个C++语言程序。
- linux中与Oracle有关的内核参数详解
- 删除重复数据@mysql
- curl命令详解
- 水处理过滤器:自清洗过滤器对造纸废水处理分析
- 长度为0的数组——C语言的非标准用法之一
- MSSQL和MySQL中,数据表两列字段值互换的问题