130. Surrounded Regions
来源:互联网 发布:创业软件 俞青 编辑:程序博客网 时间:2024/06/15 20:46
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
answer:
typedef struct{ int x, y;}Node;class Solution {public: void solve(vector<vector<char> >& board) { int row = board.size(); if(row == 0) return; int col = board[0].size(); bool visit[row * col] = {false}; vector<Node> cube; for(int i = 0; i < row; i ++){ for(int j = 0; j < col; j ++){ if(board[i][j] == 'O' && !visit[i * col + j]){ bool change = true; Node node = {i, j}; cube.push_back(node); visit[i * col + j] = true; int start = 0; while(start < cube.size()){ Node temp = cube[start]; if(temp.x > 0){ int neighber = (temp.x - 1) * col + temp.y; Node near = {temp.x - 1, temp.y}; if(!visit[neighber] && board[temp.x - 1][temp.y] == 'O'){ cube.push_back(near); visit[neighber] = true; } } else change = false; if(temp.y < col - 1){ int neighber = temp.x * col + temp.y + 1; Node near = {temp.x, temp.y + 1}; if(!visit[neighber] && board[temp.x][temp.y + 1] == 'O'){ cube.push_back(near); visit[neighber] = true; } } else change = false; if(temp.x < row - 1){ int neighber = (temp.x + 1) * col + temp.y; Node near = {temp.x + 1, temp.y}; if(!visit[neighber] && board[temp.x + 1][temp.y] == 'O'){ cube.push_back(near); visit[neighber] = true; } } else change = false; if(temp.y > 0){ int neighber = temp.x * col + temp.y - 1; Node near = {temp.x, temp.y - 1}; if(!visit[neighber] && board[temp.x][temp.y - 1] == 'O'){ cube.push_back(near); visit[neighber] = true; } } else change = false; start ++; } if(change){ for(int i = 0; i < cube.size(); i ++){ Node temp = cube[i]; board[temp.x][temp.y] = 'X'; } } cube.clear(); } } } }};
阅读全文
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
- 贝叶斯决策理论和概率密度估计方法
- MFC ActiveX (ocx)控件的开发
- leetcode 35: Search Insert Position
- 说说 JavaScript 事件流之内存和性能
- java基础总结(二)
- 130. Surrounded Regions
- box-sizing属性解析
- ubuntu ssd-caffe 配置问题之syntax error near unexpected token '('
- Linux--线程死锁
- 自动提取文本关键词demo
- vue的学习记录-例题
- Codeforces816A Karen and Morning
- poi3.9导入导出 讲解实例
- JDE表对应DB视图