【Leetcode】Surrounded Region in JAVA
来源:互联网 发布:绿色自行车是什么软件 编辑:程序博客网 时间:2024/05/16 01:18
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 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看完题目相信大家都有个思路:只要这个0是在边界,那么它肯定不行,而且所有和这个0相连接的0都不行。所以我们首先找到边界上的0,然后进行dfs找到与它相连接的0,别切用一个boolean数组标记已经来过。
public class surroundedRegions {public static void main(String args[]){surroundedRegions sr = new surroundedRegions();char sample[][]={{'X','X','X'},{'X','0','X'},{'X','X','X'}};sr.solve(sample);for(int i=0;i<sample.length;i++){ for(int j=0;j<sample[0].length;j++){ System.out.print(sample[i][j]); } System.out.println(); }}public void solve(char[][] board) { if (board == null || board.length == 0) { return; } int height = board.length; int width = board[0].length; boolean[][] visit = new boolean[height][width]; for(int i = 0 ; i < width; i++){ if(board[0][i] == 'O') visit[0][i] = true; if(board[height - 1][i] == 'O') visit[height - 1][i] = true; } for(int i = 0 ; i < height; i++){ if(board[i][0] == 'O') visit[i][0] = true; if(board[i][width - 1] == 'O') visit[i][width - 1] = true; } for(int i = 0 ; i < visit.length; i++){ for(int j = 0; j < visit[0].length;j++){ if(visit[i][j]){ dfs(board, visit, i, j); } } } for(int i = 1; i < height; i++){ for(int j = 1; j < width; j++){ if(board[i][j] == 'O' && !visit[i][j]){ board[i][j] = 'X'; } } } } private void dfs(char[][] board,boolean[][] visit,int i ,int j){ visit[i][j] = true; if(i > 0 && board[i - 1][j] == 'O' && !visit[i - 1][j]){ dfs(board, visit, i - 1, j); } if(i < visit.length - 1 && board[i + 1][j] == 'O' && !visit[i + 1][j]){ dfs(board, visit, i + 1, j); } if(j > 0 && board[i][j - 1] == 'O' && !visit[i][j - 1]){ dfs(board, visit, i, j - 1); } if(j < visit[0].length - 1 && board[i][j + 1] == 'O' && !visit[i][j + 1]){ dfs(board, visit, i, j + 1); } }
0 0
- 【Leetcode】Surrounded Region in JAVA
- [Leetcode] 130. Surrounded Region
- 【LeetCode】Surrounded Region
- [LeetCode] surrounded region包围区域
- Leetcode: 130. Surrounded Region(Week7, Medium)
- surrounded region
- [Leetcode] Surrounded Regions (Java)
- [LeetCode][Java] Surrounded Regions
- Surrounded Regions leetcode java
- [LeetCode131]Surrounded Region
- [leetcode-130]Surrounded Regions(java)
- BFS——surrounded region
- LeetCode-130. Surrounded Regions (JAVA)(环绕区域)
- LeetCode : Surrounded Regions
- [leetcode] Surrounded Regions
- leetcode 128: Surrounded Regions
- LeetCode 39: Surrounded Regions
- 【leetcode】Surrounded Regions
- ss
- GestureDetector类及其用法
- android 设置透明效果
- Android开发中dp与px之间的转换
- gets与scanf
- 【Leetcode】Surrounded Region in JAVA
- 动态代理学习笔记
- 黑马程序员-数组去重复元素
- iOS_Apprentice_2_Checklists学习总结(5)建立存储数据用的路径
- YII2.0 Activeform
- Android 4.4 原生Launcher中获取Market,Google Search的ComponmentName的方法
- 矩阵总结
- PHP项目制作
- goldengate日常维护命令