surrounded region
来源:互联网 发布:熹妃传刷元宝软件 编辑:程序博客网 时间:2024/06/05 09:45
http://leetcode.com/oldoj#question_130
Given a 2D board containing 'X'
'O'
,capture all regions surrounded by 'X'
.
A region is captured by flipping all 'O'
sinto 'X'
sin 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'尽可能污染到最大范围(说明被污染到的部分无法变'X')
BFS:
public static void solve(char[][] board) { int row = board.length; int col = board[0].length; for (int i = 0 ; i < board.length; i++) { pollute(board, 0, i); pollute(board, row-1, i); } for (int i = 0 ; i < board[0].length; i++) { pollute(board, i, 0); pollute(board, i, col-1); } for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (board[i][j] == 'P') { board[i][j] = 'O'; } else if (board[i][j] == 'O') { board[i][j] = 'X'; } } } } static void pollute(char[][] board, int row, int col) { Queue<Integer> q = new LinkedList<Integer>(); q.offer(row*board[0].length + col); while (!q.isEmpty()) { int num = q.poll(); int m = num/board.length; int n = num%board.length; if (m < 0 || m >= board.length || n < 0 || n >= board[0].length || board[m][n] != 'O') { continue; } board[m][n] = 'P'; q.offer((m - 1) * board[0].length + n); q.offer((m + 1) * board[0].length + n); q.offer((m) * board[0].length + n-1); q.offer((m) * board[0].length + n+1); } }
DFS,过不了大OJ。
public class Solution { publicvoid solve(char[][] board) { if (board == null ||board.length == 0) { return; } for (int i = 0; i <board.length; i++) { dfs(board, i, 0); dfs(board, i,board[0].length-1); } for (int j = 0; j <board[0].length; j++) { dfs(board, 0, j); dfs(board, board.length-1, j); } for (int i = 0; i <board.length; i++) { for (int j = 0; j < board[0].length; j++){ if(board[i][j] == 'P') { board[i][j] ='O'; } else{ board[i][j] ='X'; } } } } voiddfs(char[][] board, int row, int col) { if (row < 0 || row >=board.length || col < 0 || col >= board[0].length || board[row][col]!= 'O') { return; } board[row][col] ='P'; dfs(board, row-1,col); dfs(board, row+1,col); dfs(board, row,col-1); dfs(board, row,col+1); }}
0 0
- surrounded region
- [LeetCode131]Surrounded Region
- [Leetcode] 130. Surrounded Region
- 【LeetCode】Surrounded Region
- BFS——surrounded region
- 【Leetcode】Surrounded Region in JAVA
- [LeetCode] surrounded region包围区域
- Leetcode: 130. Surrounded Region(Week7, Medium)
- region
- Region
- #region
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Surrounded Regions
- Letter combinations of phone number
- sudoku
- word search
- Restore IP address
- Queens
- surrounded region
- Palindrome Partition
- Decode Ways
- Ibizcybertech阿联酋IMS的软件服务,解决方案,今天再次拉低大型机的成本
- 关于DFS和递归的一点总结
- 【cocos2d-x官方文档】骨骼动画详解
- hd 1465 不容易系列之一
- 股票买卖
- Maximum Subarray