LeetCode题解:Surrounded Regions
来源:互联网 发布:日本神户钢铁造假知乎 编辑:程序博客网 时间:2024/05/22 15:49
Surrounded Regions
Total Accepted: 1947 Total Submissions: 13017Given 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',找到一个之后做一个DFS或者BFS均可,做的时候随时检查是否到达棋盘的边缘。到的话就不转化成‘X',否则按照搜索记录把棋盘上的网格转换成’X'。
题解:
class Solution {public: void navigate_and_fill (vector<vector<char>>& board, int R, int C, int M, int N) { vector<pair<int, int>> nav_history; bool surrounded = true; queue<pair<int, int>> nav_queue; nav_queue.push (make_pair (R, C)); board[R][C] = 'o'; while (!nav_queue.empty()) { auto q = nav_queue.front(); nav_history.push_back(q); nav_queue.pop(); if (q.first == 0 || q.first == M - 1 || q.second == 0 || q.second == N - 1) surrounded = false; if (q.first != 0 && board[q.first - 1][q.second] == 'O') { board[q.first - 1][q.second] = 'o'; nav_queue.push (make_pair (q.first - 1, q.second)); } if (q.first != M - 1 && board[q.first + 1][q.second] == 'O') { board[q.first + 1][q.second] = 'o'; nav_queue.push (make_pair (q.first + 1, q.second)); } if (q.second != 0 && board[q.first][q.second - 1] == 'O') { board[q.first][q.second - 1] = 'o'; nav_queue.push (make_pair (q.first, q.second - 1)); } if (q.second != N - 1 && board[q.first][q.second + 1] == 'O') { board[q.first][q.second + 1] = 'o'; nav_queue.push (make_pair (q.first , q.second + 1)); } } if (surrounded) for (auto & n : nav_history) board[n.first][n.second] = 'X'; } void solve (vector<vector<char>>& board) { const int M = board.size(); if (M == 0) return; const int N = board[0].size(); if (N == 0) return; for (int R = 0; R < M; ++R) for (int C = 0; C < N; ++C) if (board[R][C] == 'O') navigate_and_fill (board, R, C, M, N); for (auto & r : board) for (auto & c : r) if (c == 'o') c = 'O'; }};
- LeetCode题解:Surrounded Regions
- LeetCode题解:Surrounded Regions
- 【leetcode题解】5 - Surrounded Regions
- LeetCode 题解(153): Surrounded Regions
- LeetCode题解–130. Surrounded Regions
- 题解:Surrounded Regions
- 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
- 在Ubuntu12.04启用Eclipse的globalmenu全局菜单
- ListView的listSelector失效
- Oracle的Numer类型与C,C#数据类型对应关系
- ie11怎么降级
- LeetCode题解: Reverse Linked List II
- LeetCode题解:Surrounded Regions
- 美国cs暑期实习面试记录
- Javascript jQuery 快捷键插件 Firefox热键屏蔽
- Django 1.5碎碎念
- 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第三节 栈与堆,值类型与引用类型
- LeetCode题解: Search for a Range
- 错误./hello: error while loading shared libraries: libQtGui.so.4: cannot open shared object file:
- 移植tslib到开发板及部分问题解决
- Django RESF framework(官方教程)