【LeetCode 130. 被围绕的区域】

1. 题目

2. 分析

这题其实非常不错。如果正向解,非常麻烦;因为很难界定哪些O是被包围的?但是如果反向解呢?因为边界的O不会被包围,那么就可以想到跟边界O相连的O都不会被包围。那么除此之外的O都会被包围,题目就解决了。

3. 代码

python 复制代码
class Solution:
    def solve(self, board: List[List[str]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """
        m, n = len(board), len(board[0])
        vis = [[0] * n for i in range(m)]
        
        # 只从边界遍历
        for i in [0,m-1]:
            for j in range(n):
                if board[i][j] == 'O':                
                    self.dfs(i, j, m, n, vis, board)
        for j in [0, n-1]:
            for i in range(m):
                if board[i][j] == 'O':                
                    self.dfs(i, j, m, n, vis, board)

        print(vis)
        for i in range(m):
            for j in range(n):
                if vis[i][j] == 0:
                    board[i][j] = 'X'
            
    def dfs(self, i, j, m, n, vis, board):
        if i>=0 and j>=0 and i<m and j< n:
            if vis[i][j] == 0 and board[i][j] == "O":
                vis[i][j] = 1
                for item in [(i-1,j), (i, j-1), (i+1, j), (i, j+1)]:
                    new_i, new_j = item
                    self.dfs(new_i, new_j, m, n, vis, board)
相关推荐
Logic1014 分钟前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
深圳市快瞳科技有限公司9 分钟前
面向端侧部署的多帧宠物身份识别:完整性评分机制与工程约束
人工智能·算法·计算机视觉·端侧ai·宠物识别·宠物ai·宠物身份识别
悠仁さん2 小时前
非类型模板参数的特化与偏特化
java·数据结构·算法
垆边人似月.2 小时前
最优河堤加固(二分答案 + 前缀和)
算法
171320330计算机毕设编程2 小时前
计算机毕业设计 基于Hadoop的新能源汽车发展前景分析 LW PPT
java·大数据·hadoop·python·算法·随机森林·线性回归
垆边人似月.3 小时前
幻兽防御战(贪心算法)
数据结构·算法
DongQiShanRen3 小时前
六根硬件映射(下):物理闭环五步法,抽一条已实装的看
大数据·jvm·人工智能·算法·rust·哈希算法·集成学习
Code_Solitude3 小时前
c语言:指针(3)+冒泡排序
java·c语言·算法
FPGA信号处理3 小时前
【模式识别】第四节课:支持向量机
算法·机器学习·支持向量机
碧海银沙音频科技研究院3 小时前
面向长尾音频分类的知识蒸馏研究
人工智能·算法·音视频