算法作业HW19 130. Surrounded Regions
来源:互联网 发布:js onscroll 编辑:程序博客网 时间:2024/06/07 01:39
Description:
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.
Note:
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
Solution:
Analysis and Thinking:
题目意思为给定一个二维矩阵,里面包含O、X,要求把所有被X包围的O变为X,题目可以用很多解法比如DFS、BFS等,这里采用dfs的方式进行解决
Steps:
1.判断输入的board矩阵是否为空,若是则返回
2.获取矩阵的行列长度
3.按行元素进行深度优先遍历,判断输入矩阵的下标信息,当行列坐标都没越界,元素置为‘D’
4.按列元素进行深度优先遍历,判断输入矩阵的下标信息,当行列坐标都没越界,元素置为‘D’
5.深度优先的顺序为某一元素的四周,即其行列坐标加减1可得的四个位置的元素
6.最后循环遍历后的board,当其元素为‘O’,置换为‘X’,返回
Codes:
public class Solution { int i,j; char[][] board; void dfs(int x, int y){ if(x<0 || x>=i || y<0 || y>=j || board[x][y]!='O') return; board[x][y]='D'; dfs(x-1,y); dfs(x+1,y); dfs(x,y-1); dfs(x,y+1); } public void methodMain(char[][] board){ if(board==null || board.length==0) return; this.board=board; i=board.length; j=board[0].length; for(int y=0;y<i;y++){ dfs(0,y); dfs(y-1,j); } for(int x=1;x<j-1;x++){ dfs(x,0); dfs(x,i-1); } for(int x=0;x<m;x++) for(int y=0;y<n;y++){ if(board[x][y]=='O') board[x][y]='X'; else if(board[x][y]=='D') board[i][j]='O'; } }}
Results:
阅读全文
0 0
- 算法作业HW19 130. Surrounded Regions
- [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
- eclipse菜单栏windows/preferences下找不到server选项
- 与时间做朋友
- opencv——边缘检测
- web开发相关概念+web服务器
- java实用加密算法AES和RSA
- 算法作业HW19 130. Surrounded Regions
- Java一维数组实验编程
- 矩阵交换II HDU
- html select操作
- python正则表达式
- LeetCode#414. Third Maximum Number
- TI 一主三从主机端分析【发现服务流程】
- 大牛们的ACM 算法 阶段性练习
- 观察-Watchers