leetcode--SurroundedRegions
来源:互联网 发布:数据中心网络拓扑结构 编辑:程序博客网 时间:2024/06/07 02:07
思路:利用bfs先把所有和最外层O连通的O标记,然后遍历所有点,没被标记的O就是被X包围的内层点
import java.util.LinkedList;import java.util.Queue;/** * Created by marsares on 15/6/28. */public class SurroundedRegions { boolean[][]marked; boolean[][]zeros; int row; int column; public void solve(char[][] board) { if(board==null)return; if(board.length==0)return; row=board.length; column=board[0].length; zeros=new boolean[row][column]; for(int i=0;i<column;i++){ if(!zeros[0][i]&&board[0][i]=='O')bfs(0,i,board); if(!zeros[row-1][i]&&board[row-1][i]=='O')bfs(row-1,i,board); } for(int i=0;i<row;i++){ if(!zeros[i][0]&&board[i][0]=='O')bfs(i,0,board); if(!zeros[i][column-1]&&board[i][column-1]=='O')bfs(i,column-1,board); } for(int i=0;i<row;i++){ for(int j=0;j<column;j++){ if(board[i][j]=='O'&&!zeros[i][j])board[i][j]='X'; } } } public void bfs(int i,int j,char[][]board){ Queue<Integer>queue=new LinkedList<Integer>(); queue.add(i*column+j); zeros[i][j]=true; while(!queue.isEmpty()){ int local=queue.poll(); int x=local/column; int y=local%column; if(x-1>=0){ if(board[x-1][y]=='O'&&!zeros[x-1][y]){ queue.add((x-1)*column+y); zeros[x-1][y]=true; } } if(x+1<row){ if(board[x+1][y]=='O'&&!zeros[x+1][y]){ queue.add((x+1)*column+y); zeros[x+1][y]=true; } } if(y-1>=0){ if(board[x][y-1]=='O'&&!zeros[x][y-1]){ queue.add(x*column+y-1); zeros[x][y-1]=true; } } if(y+1<column){ if(board[x][y+1]=='O'&&!zeros[x][y+1]){ queue.add(x*column+y+1); zeros[x][y+1]=true; } } } } public void printBoard(char[][]board){ for(int i=0;i<board.length;i++){ for(int j=0;j<board[0].length;j++){ System.out.print(board[i][j]); } System.out.println(); } } public void printZeros(){ for(int i=0;i<zeros.length;i++){ for(int j=0;j<zeros[0].length;j++){ System.out.print(zeros[i][j]); } System.out.println(); } } public static void main(String[]args){ SurroundedRegions sr=new SurroundedRegions(); char[][]board={{'X','O','X','O','X','O'},{'O','X','O','X','O','X'},{'X','O','X','O','X','O'},{'O','X','O','X','O','X'}}; sr.solve(board); sr.printBoard(board); }}
0 0
- leetcode--SurroundedRegions
- SurroundedRegions
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- 央行降准降息 100万房贷月还款额再减141元
- CSS盒子模型
- 拼尽全力还是0-1 中国女足不敌美国队无缘四强
- shell脚本中的输入输出
- 为何总是暴跌后央行收拾残局
- leetcode--SurroundedRegions
- 下周沪深两市限售股解禁市值约710亿元
- GoAhead初探
- 这几年阿里巴巴都对印度做了些什么?
- Assembly 调用的目标发生了异常
- 事务中的锁,行锁与表锁
- LeetCode_60---Permutation Sequence
- 中国发展互联网+制造业的未来:打破企业边界
- C++学习备忘录=>持续更新