【leetcode】130. 被围绕的区域

文章目录

题目

130. 被围绕的区域

给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' 组成,捕获 所有 被围绕的区域:

连接:一个单元格与水平或垂直方向上相邻的单元格连接。

区域:连接所有 'O' 的单元格来形成一个区域。

围绕:如果您可以用 'X' 单元格 连接这个区域,并且区域中没有任何单元格位于 board 边缘,则该区域被 'X' 单元格围绕。

通过 原地 将输入矩阵中的所有 'O' 替换为 'X' 来 捕获被围绕的区域。你不需要返回任何值。

题解

  1. 从边界出发进行遍历,如果遇到'O',则进行标记
  2. 然后对未标记的'O'变为'X'
python 复制代码
class Solution(object):
    def solve(self, board):
        """
        :type board: List[List[str]]
        :rtype: None Do not return anything, modify board in-place instead.
        """
        if not board:
            return 0

        n = len(board[0])
        m = len(board)

        def dfs(x, y):
            if not 0 <= x < m or not 0 <= y < n or board[x][y] != 'O':
                return
            
            board[x][y] = 'A'
            dfs(x - 1, y)
            dfs(x, y - 1)
            dfs(x + 1, y)
            dfs(x, y + 1)

        for i in range(m):
            dfs(i, 0)
            dfs(i, n - 1)

        for j in range(n):
            dfs(0, j)
            dfs(m - 1, j)

        for i in range(m):
            for j in range(n):
                if board[i][j] == 'A':
                    board[i][j] = 'O'
                elif board[i][j] == 'O':
                    board[i][j] = 'X'
        
相关推荐
天真小巫1 分钟前
2025.11.29总结
职场和发展
ghie90908 分钟前
ART 和SART 医学CT重建迭代重建算法
人工智能·算法·计算机视觉
熊猫_豆豆10 分钟前
基于改进沙猫群优化算法的Otsu图像分割
人工智能·算法·计算机视觉
吃着火锅x唱着歌11 分钟前
LeetCode 624.数组列表中的最大距离
数据结构·算法·leetcode
im_AMBER15 分钟前
Leetcode 64 大小为 K 且平均值大于等于阈值的子数组数目
笔记·学习·算法·leetcode
AndrewHZ15 分钟前
【图像处理基石】什么是图像处理中的注意力机制?
图像处理·pytorch·深度学习·算法·计算机视觉·注意力机制·通道注意力
Liangwei Lin16 分钟前
洛谷 P9241 [蓝桥杯 2023 省 B] 飞机降落
职场和发展·蓝桥杯
DuHz17 分钟前
通感一体化(ISAC)波形设计的实验验证研究——论文阅读
论文阅读·算法·信息与通信·毫米波雷达
CoderYanger18 分钟前
递归、搜索与回溯-综合练习:22.优美的排列
java·算法·leetcode·深度优先·1024程序员节
星光一影31 分钟前
知识付费系统源码,资源网站,支持pc和h5
mysql·职场和发展·php·创业创新·html5·程序员创富