130. Surrounded Regions
来源:互联网 发布:压缩的js还原 编辑:程序博客网 时间:2024/06/04 19:35
题意: 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
思路:这题如果从被包围的O向外操作,这个过程是很繁琐的,而且很难code,所以只要从边界的O入手就可以了,和边界的O相连的O就是不会被翻转的O,所以这题用dfs和bfs都是可以的,把与边界相连的O都标记出来就好了,之后遍历的时候将他们反转就好了。
这段是别人的参考代码(DFS):
class Solution {public: void solve(vector<vector<char>>& board) { int i,j; int row=board.size(); if(!row) return; int col=board[0].size(); for(i=0;i<row;i++){ check(board,i,0,row,col); if(col>1) check(board,i,col-1,row,col); } for(j=1;j+1<col;j++){ check(board,0,j,row,col); if(row>1) check(board,row-1,j,row,col); } for(i=0;i<row;i++) for(j=0;j<col;j++) if(board[i][j]=='O') board[i][j]='X'; for(i=0;i<row;i++) for(j=0;j<col;j++) if(board[i][j]=='1') board[i][j]='O'; } void check(vector<vector<char> >&vec,int i,int j,int row,int col){ if(vec[i][j]=='O'){ vec[i][j]='1'; if(i>1) check(vec,i-1,j,row,col); if(j>1) check(vec,i,j-1,row,col); if(i+1<row) check(vec,i+1,j,row,col); if(j+1<col) check(vec,i,j+1,row,col); } }};
下面还有一段是python的代码,因为写的太巧了,特别记录下来:
def solve(self, board): if not any(board): return m, n = len(board), len(board[0]) save = [ij for k in range(max(m,n)) for ij in ((0, k), (m-1, k), (k, 0), (k, n-1))] while save: i, j = save.pop() if 0 <= i < m and 0 <= j < n and board[i][j] == 'O': board[i][j] = 'S' save += (i, j-1), (i, j+1), (i-1, j), (i+1, j) for row in board: for i, c in enumerate(row): row[i] = 'XO'[c == 'S']
save中存储所有可能的边界情况。
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
- C++(笔记)浅谈protected
- 关于define 的疑惑
- struct_and_sort_and_structSort
- 51nod 1066 bash游戏
- 修改VS属性页中的Inherited values
- 130. Surrounded Regions
- Linux运维笔记-文档总结-文档与权限
- XML之DOM解析方式
- ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5
- 从AdaBoost到GBDT(part 1)
- 线程池
- 拼写错误取消
- ibatis
- 平常水题