leetcode 130被围绕的区域

news/2024/7/1 3:52:36

思路

一个区域不能被围绕是这个区域有部分在边界

可以循环边界,找边界的区域(利用深搜),这些都不能被围绕,其余的,能被围绕,应该从"O"变为”X“

代码

static boolean[][] hasGo;//记录是否走过
    static int[][] to = {{0,1},{1,0},{-1,0},{0,-1}};
    public void solve(char[][] board) {
        hasGo = new boolean[board.length][board[0].length];
        for (int i = 0;i<board.length;i++){
            for (int j = 0; j<board[0].length;j++){
                //边界
                if (i==0||j==0|| i == board.length-1||j == board[0].length-1){//找边界
                   if (hasGo[i][j] == false && board[i][j] == 'O'){//没被走过且是可以走的
                       dfs(i,j,board);
                   }
                }
            }
        }
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if (board[i][j] == 'O' && hasGo[i][j] == false){//是0,且从边界走不到
                    board[i][j] = 'X';
                }
            }
        }
    }

    private void dfs(int i, int j, char[][] board) {
        hasGo[i][j] = true;// 这个点走过了
        for (int k = 0;k<4;k++){
            int ii = i + to[k][0];
            int jj = j + to[k][1];
            if (ii>=0 && ii<board.length&&jj>=0&&jj<board[0].length){
                if (hasGo[ii][jj] == false&& board[ii][jj] == '0'){
                    dfs(ii,jj,board);
                }
            }
        }
    }

注意

字符分别是大写的X和大写的O,我把O当成了0
在这里插入图片描述


http://lihuaxi.xjx100.cn/news/2215583.html

相关文章

echarts学习:通过图例事件实现选中后控制多条折线的显隐

1.问题描述 我在工作中遇到了这样一个需求&#xff1a;我们都知道点击echarts折线图的图例&#xff0c;是可以控制折线的显隐的。我现在希望点击某一个图例可以改变多条折线的显隐。 例如在下面这张图中&#xff0c;我将“xxx水位”和“yyy水位”分为一组&#xff1b;将“xxx…

C#面:C#支持多重继承么?

C#不支持多重继承。在C#中&#xff0c;一个类只能直接继承自一个基类。这是由于C#的设计目标之一是避免多重继承可能带来的复杂性和潜在的问题。 然而&#xff0c;C#提供了接口&#xff08;interface&#xff09;的概念来实现类似多重继承的功能。一个类可以实现多个接口&…

IT人的拖延——这个任务太复杂,太难了怎么办?

随着科技的发展&#xff0c;IT人需要不断地运用新技术来解决更多传统方式难以解决的问题&#xff0c;有些问题真的不是不想解决&#xff0c;而是真的太复杂&#xff0c;太难了&#xff0c;根本不知道从何开始&#xff0c;也没有什么前辈的经验可以借鉴。我们这些对事情难度的认…

Gson的常见用法

一引入依赖 <!-- json解析的工具包 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> <!-- 主要为了代码简洁和日志打印 --> <…

三生随记——茶叶的诅咒

在遥远的深山中&#xff0c;有一个被浓雾常年笼罩的古村落。这里的人们生活简朴&#xff0c;与外界几乎隔绝&#xff0c;他们唯一的财富&#xff0c;便是那满山遍野的奇特茶叶。这种茶叶的叶片深绿如玉&#xff0c;散发着诱人的香气&#xff0c;被称为“幽雾灵茶”。 然而&…

Opencv无法自动补全

执行下面两条命令&#xff1a; 特别说明: 即使能补全了&#xff0c;但是还是有弊端&#xff0c;写参数的时候没有参数的候选项&#xff0c;所以相当于只能补全个函数名&#xff0c;谁有更好的解法&#xff0c;恳求留言告知。 参考1&#xff1a;https://blog.csdn.net/yuezhilan…

QT 使用资源文件的注意点

不要存放没有使用的资源文件 即使在代码中没有使用到的资源文件&#xff0c;也会编译到执行文件或者DLL里面去这样会增大它的体积。如下 在代码没有使用这个资源文件(10.4M的2k图片)&#xff0c;但是编译出来的程序有 12M左右的大小

第三篇—基于黑白样本的webshell检测

本篇为webshell检测的第三篇&#xff0c;主要讲的是基于黑白样本的webshell预测&#xff0c;从样本收集、特征提取、模型训练&#xff0c;最后模型评估这四步&#xff0c;实现一个简单的黑白样本预测模型。   若有误之处&#xff0c;望大佬们指出 Ⅰ 基本实现步骤 样本收集&…