【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)
相关推荐
牧瀬クリスだ9 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
文丑颜不良啊9 小时前
LeetCode1141~1160题目解析
java·leetcode
木井巳9 小时前
【动态规划: 路径问题】下降路径最小和
java·算法·leetcode·动态规划·推荐算法
deepseek2310 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技10 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
青少儿编程课堂10 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
ynchyong10 小时前
培养程序化思维
leetcode·程序化思维·刷题经验
荆棘鸟智能11 小时前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
DFT计算杂谈11 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf
绕灵儿12 小时前
火灾检测-应用场景-YOLO训练记录
人工智能·算法