zoukankan      html  css  js  c++  java
  • Leetcode130. 被围绕的区域(深搜)

    问题描述

    给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。
    找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。

    示例

    X X X X
    X O O X
    X X O X
    X O X X
    

    运行你的函数后,矩阵变为:

    X X X X
    X X X X
    X X X X
    X O X X
    

    解释:
    被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。 任何不在边界上,或不与边界上的 'O' 相连的 'O' 最终都会被填充为 'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

    代码

    class Solution {
        void def(int i,int j,int[][]res1,char[][]board) {
    		if(i-1>0&&board[i-1][j]=='O'&&res1[i-1][j]==0)
    				{
    				res1[i-1][j]=1;
    				def(i-1,j,res1,board);
    				}
    			if(i+1<board.length&&board[i+1][j]=='O'&&res1[i+1][j]==0)
    				{
    				res1[i+1][j]=1;
    				def(i+1,j,res1,board);
    				}
    			if(j-1>0&&board[i][j-1]=='O'&&res1[i][j-1]==0)
    				{
    				res1[i][j-1]=1;
    				def(i,j-1,res1,board);
    				}
    			if(j+1<board[0].length&&board[i][j+1]=='O'&&res1[i][j+1]==0)
    				{
    				res1[i][j+1]=1;
    				def(i,j+1,res1,board);
    				}
    	}
    	 public void solve(char[][] board) {
    		 if(board==null||board.length==0||board[0].length==0)
    			 return;
    		 	int[][] res1=new int[board.length][board[0].length];
    		 	int[][] res2=new int[board.length][board[0].length];
    		 	for(int i=0;i<board.length;i++) {
    		 		int j=0;
    		 			if(board[i][j]=='O') {
    		 				res1[i][j]=1;
    		 				def(i,j,res1,board);
    		 			}
    		 		j=board[0].length-1;
    		 			if(board[i][j]=='O') {
    		 				res1[i][j]=1;
    		 				def(i,j,res1,board);
    		 			}
    		 	}
    		 	for(int j=0;j<board[0].length;j++) {
    		 		int i=0;
    		 			if(board[i][j]=='O') {
    		 				res1[i][j]=1;
    		 				def(i,j,res1,board);
    		 			}
    		 		i=board.length-1;
    		 			if(board[i][j]=='O') {
    		 				res1[i][j]=1;
    		 				def(i,j,res1,board);
    		 			}
    		 	}
    		 	for(int i=0;i<board.length;i++) {
    		 		for(int j=0;j<board[0].length;j++) {
    		 			if(board[i][j]=='O'&&res1[i][j]==0) {
    		 				board[i][j]='X';
    		 			}
    		 		}
    		 	}
    	    }
    }
    

  • 相关阅读:
    AVAudioSession
    (whh仅供自己参考)进行ip网络请求的步骤
    1、大部分社交平台接口不支持https协议。
    怎样在官网上下载xcode7.2
    ios9 http请求失败的问题
    真机测试最详细的步骤
    svn的初级使用
    framework not found -fno-arc编译错误
    单例对象
    IOS6学习笔记(三)
  • 原文地址:https://www.cnblogs.com/code-fun/p/14303016.html
Copyright © 2011-2022 走看看