力扣:130. 被围绕的区域

 深度优先搜索解法:

1.先从矩阵的外部的来标记符合条件的O字符。把标记的O字符换成字符A,同时在边界的O字符的基础上继续来查找和边界相连的O字符。

2.之后用for循环来遍历二维数组遍历到记号A的字符就给他赋值为O,其他的字符都赋值为X。

class Solution {
    int m,n;
    public void solve(char[][] board) {
        //得到矩阵的长度
       m=board.length;
       //得到矩阵的宽度
       n=board[0].length;
       //标记0列和n-1列边界的字符O
      for(int i=0;i<m;i++){
          biaoji(i,0,board);
          biaoji(i,n-1,board);
      }
      //标记0行和m-1行边界的字符O
      for(int j=1;j<n-1;j++){
          biaoji(0,j,board);
          biaoji(m-1,j,board);
      }
      //遍历这个二维数组的全部值
      for(int i=0;i<m;i++){
          for(int j=0;j<n;j++){
              //判断二维数组的值是否是标记的值是的话,把标记的只改为O
               if(board[i][j]=='A'){
                   board[i][j]='O';
               }else{ //不是的话将其他的O改成X
                   board[i][j]='X';
               }
          }
      }
    }
    //进行标记的函数
    public void biaoji(int i,int j,char[][]board){
        //进行查找标记
        if(i<0||i>m-1||j<0||j>n-1||board[i][j]!='O'){
            return;
        }
        //标记符合条件的值
        board[i][j]='A';
        //进行深度优先搜索来查找边界相邻的O
        biaoji(i,j+1,board);
        biaoji(i,j-1,board);
        biaoji(i+1,j,board);
        biaoji(i-1,j,board);
    }
}

相关推荐

  1. 130. 围绕区域

    2024-01-29 20:28:01       38 阅读
  2. 【DFS】130.围绕区域

    2024-01-29 20:28:01       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 20:28:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 20:28:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 20:28:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 20:28:01       20 阅读

热门阅读

  1. 基于scala使用flink将kafka数据写入mysql示例

    2024-01-29 20:28:01       38 阅读
  2. 二分查找(适应于无序数组的一种方法)

    2024-01-29 20:28:01       32 阅读