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 X X O O X X X O X X O X X

After running your function, the board should be:

X X X X X X X X X X X X X O X X

C++

class Solution {
void dfs(vector<vector<char> > &board,int row,int col){
if (board[row][col]=='O'){
board[row][col]='*';
if (row<board.size()-1) dfs(board,row+1,col);
if (col<board[0].size()-1) dfs(board,row,col+1);
if (row>1) dfs(board,row-1,col);
if (col>1) dfs(board,row,col-1);
}
}
public:
void solve(vector<vector<char>> &board) {
if (board.size()<1 || board[0].size()<1) return;
int row = board.size(),col = board[0].size(); for(int i=0;i<row;++i){
dfs(board,i,0);
dfs(board,i,col-1);
}
for(int i=0;i<col;++i){
dfs(board,0,i);
dfs(board,row-1,i);
} for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
if (board[i][j]=='O') board[i][j]='X';
if (board[i][j]=='*') board[i][j]='O';
}
}
}
};

最新文章

  1. ArrayList&lt;E&gt;源码分析
  2. NanUI for Winform发布,让Winform界面设计拥有无限可能
  3. linux /etc/rc.d/目录的详解
  4. LESS 拓展选择器extend基础用法说明
  5. javascript禁用与启用select标签(实用版)
  6. 层模型--相对定位(position:relative)
  7. DOMElement之Offset
  8. angularJS常用命令
  9. 利用jackson转成json字符串(ssh中)
  10. 阿里巴巴Java开发规约插件p3c详细教程及使用感受
  11. webpack运行常见错误归纳
  12. Failed to load the JNI library &quot;E:\JDK6.0\bin\client\jvm.dll&quot;
  13. sql语句中的left join,right join,inner join的区别
  14. Spring MVC详解
  15. Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name:
  16. kubenetes安装记录和要点
  17. 深入了解IOC
  18. Leetcode 101. Symmetric Tree(easy)
  19. C#编程基础(简单概述与理解)
  20. linux系统上安装java

热门文章

  1. 5.10学习总结——Activity的跳转和传值
  2. PHP中的日期相关函数(一)
  3. Linux系列(30) - rpm命令管理之安装命令(2)
  4. element-ui的Tree树组件使用技巧
  5. redis linux的 安装
  6. three.js 模型常用操作
  7. 关于Python中的深浅拷贝
  8. 鸿蒙内核源码分析(互斥锁篇) | 比自旋锁丰满的互斥锁 | 百篇博客分析OpenHarmony源码 | v27.02
  9. CF643F-Bears and Juice【组合数学】
  10. P5437-[XR-2]约定【拉格朗日差值,数学期望】