Surrounded Regions ,BFS
来源:互联网 发布:linux不显示电池 编辑:程序博客网 时间:2024/04/29 20:15
首先初始化queue为最外面一圈的'O'的位置,然后bfs,把所有能到达的'O'标记为'Z',这样剩余的'O'变成'X','Z'变成‘O’就行了
class Solution {
struct point{int x,y;
point(int a,int b):x(a),y(b){}
};
public:
void solve(vector<vector<char>> &board) {
if(board.empty()||board.size()==0||board[0].size()==0)
return;
int m=board.size(),n=board[0].size();
queue<point> queue;
//初始化
for(int i=0;i<n;i++){
if(board[0][i]=='O'){
board[0][i]='Z';
queue.push(point(0,i));
}
if(board[m-1][i]=='O'){
board[m-1][i]='Z';
queue.push(point(m-1,i));
}
}
for(int i=0;i<m;i++){
if(board[i][0]=='O'){
board[i][0]='Z';
queue.push(point(i,0));
}
if(board[i][n-1]=='O'){
board[i][n-1]='Z';
queue.push(point(i,n-1));
}
}
//BFS
while(!queue.empty()){
point p=queue.front();
queue.pop();
if(p.x>0&&board[p.x-1][p.y]=='O'){
board[p.x-1][p.y]='Z';
queue.push(point(p.x-1,p.y));
}
if(p.x<m-1&&board[p.x+1][p.y]=='O'){
board[p.x+1][p.y]='Z';
queue.push(point(p.x+1,p.y));
}
if(p.y>0&&board[p.x][p.y-1]=='O'){
board[p.x][p.y-1]='Z';
queue.push(point(p.x,p.y-1));
}
if(p.y<n-1&&board[p.x][p.y+1]=='O'){
board[p.x][p.y+1]='Z';
queue.push(point(p.x,p.y+1));
}
}
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
board[i][j]=='Z'?board[i][j]='O':board[i][j]='X';
return;
}
};
0 0
- 【DFS||BFS】Surrounded Regions
- Surrounded Regions ,BFS
- LeetCode[BFS]: Surrounded Regions
- 130:Surrounded Regions【BFS】
- Surrounded Regions BFS遍历
- leetCode_ Surrounded Regions(BFS)
- LeetCode - Surrounded Regions(BFS)
- (LeetCode 130) Surrounded Regions(BFS)
- 130. Surrounded Regions(BFS)
- (M)BFS:130. Surrounded Regions
- [leetcode] 130 surrounded regions dfs bfs
- 【LeetCode】 Surrounded Regions (BFS && DFS)
- leetCode-Surrounded Regions DFS与BFS解法
- leetcode -- Surrounded Regions -- 典型题。BFS
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- socket实例
- HDU-#4771 Stealing Harry Potter's Precious(bfs+状态压缩)
- 【解决方案】LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- GNU工具链的使用(三)
- android 线程的开启和停止(借鉴java的技术)
- Surrounded Regions ,BFS
- cuda + vs assistant
- CellCtrl控件完美破解研究
- 从B树、B+树、B*树谈到R 树
- C# 格式化显示金额函数
- iOS8 沙盒路径调整
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- iPhone锁屏字体
- DTCMS_Detail