day-35 被围绕的区域

思路

很明显,只有与边界上的O连接的O才不会X覆盖

解题方法

检测边界上的字符,如果是O则向周围探测,访问与之连接的不会被覆盖的X。边界探测结束后,没有访问过的O皆会被X覆盖

Code

java 复制代码
class Solution {
    public int dir[][]={{0,1},{0,-1},{1,0},{-1,0}};
    public boolean vis[][];
    public char[][] map;
    public int m;
    public int n;
    public void solve(char[][] board) {
        m=board.length;
        n=board[0].length;
        map=board;
        vis=new boolean[m][n];
        for(int i=0;i<m;i++){
            dfs(i,0);
            dfs(i,n-1);
        }
        for(int i=1;i<n-1;i++){
            dfs(0,i);
            dfs(m-1,i);
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                board[i][j]='X';
            }
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(map[i][j]=='X'&&vis[i][j]){
                    board[i][j]='O';
                }
            }
        }
    }
    void dfs(int x,int y){
        if(map[x][y]=='X') return;
        vis[x][y]=true;
        for(int i=0;i<4;i++){
            int newx=x+dir[i][0];
            int newy=y+dir[i][1];
            if(0<=newx&&newx<m&&0<=newy&&newy<n&&map[newx][newy]=='O'&&
            !vis[newx][newy]){
                dfs(newx,newy);
            }
        }
    }
}
相关推荐
SKYDROID云卓小助手14 小时前
三轴云台之控制协同技术
服务器·网络·图像处理·人工智能·算法
The Last.H14 小时前
Educational Codeforces Round 185 (Rated for Div. 2)A-C
c语言·c++·算法
fengfuyao98515 小时前
匈牙利算法的MATLAB实现
java·算法·matlab
路过君_P15 小时前
C++ 算法题解:迷宫寻路
c++·算法·深度优先
罗湖老棍子15 小时前
二维vector完全指南1:从定义到增删改查
数据结构·c++·算法·stl
再卷也是菜15 小时前
C++篇(22)LRU Cache
数据结构·c++·算法
语落心生15 小时前
海量数据集的AI自动化预测打标 -- 振动特征多标签分类
算法
语落心生15 小时前
海量数据集AI自动化打标 - 温度周期检测
算法
语落心生15 小时前
海量数据集的AI自动化预测打标 -- 矿业音频分类
算法
吃着火锅x唱着歌15 小时前
LeetCode 3185.构成整天的下标对数目II
算法·leetcode·职场和发展