首页 > 其他分享 >130. 被围绕的区域(中)

130. 被围绕的区域(中)

时间:2024-03-21 14:02:06浏览次数:20  
标签:return 区域 围绕 dfs range 130 board col row

目录

题目

题解:DFS

class Solution:
    def solve(self, board: List[List[str]]) -> None:
        # 如果是空数组,直接返回
        if not board: return
        # 计算数组长宽
        row = len(board)
        col = len(board[0])
        # 如果长度或者宽度中一个小于3的话也不用算了,直接返回
        if row < 3 or col < 3: return
        # DFS函数
        def dfs(i, j):
        # 如果i,j中有一个越界或者遇到了X则不继续扫描
            if i < 0 or j < 0 or i >= row or j >= col or board[i][j] != 'O':
                return
            # 否则把数组中的O变成#,意思是这个O和边缘是连通的
            board[i][j] = '#'#位于边界上或者与边界的O相连的O都变成#
            # 之后从当前坐标开始上下左右进行递归搜索
            dfs(i - 1, j)
            dfs(i + 1, j)
            dfs(i, j - 1)
            dfs(i, j + 1)
        
        for i in range(row):
        # 搜索第一行和最后一行
            dfs(i, 0)
            dfs(i, col - 1)
        
        for i in range(col):
        # 搜索第一列和最后一列
            dfs(0, i)
            dfs(row - 1, i)
        for i in range(0, row):
            for j in range(0, col):
                if board[i][j] == 'O':
                    board[i][j] = 'X'
                if board[i][j] == '#':
                    board[i][j] = 'O'
  • 实例

      # 全部搜索完毕后:
      # X X X X 
      # X X O X
      # X O X X
      # X O X X
      # 变为:    
      # X X X X
      # X X O X
      # X # X X
      # X # X X
      # 之后再将所有的O变成X,#变成O就可以了
    

标签:return,区域,围绕,dfs,range,130,board,col,row
From: https://www.cnblogs.com/lushuang55/p/18087243

相关文章

  • 使用fabric.js框选图片区域定位标注图片内容
    仍然是在图片上特定区域根据数值显示不同的颜色的需求,过了这么久,svg图迟迟提供不了,考虑canvas方案。记录比较下canvas及各canvas框架的使用。canvas<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>使用JavaScript在图像上选择区域</title></h......
  • 130_逻辑回归
    目录逻辑回归简介逻辑回归简介......
  • 2024中国行政区域含港澳台【省市区县镇乡村】五级联动地址json数据
    GitHub-657258535/China-Area-Region-Administrative-Divisions:中华人民共和国行政区划:省级(省份)、地级(城市)、县级(区县)、乡级(乡镇街道)、村级(村委会居委会)五级联动地址数据。 中华人民共和国行政区划:省级(省份)、地级(城市)、县级(区县)、乡级(乡镇街道)、村级(村委会居委会)......
  • 303. 区域和检索 - 数组不可变
    目录题目前缀和题目给定一个整数数组nums,处理以下类型的多个查询:计算索引left和right(包含left和right)之间的nums元素的和,其中left<=right实现NumArray类:NumArray(int[]nums)使用数组nums初始化对象intsumRange(inti,intj)返回数组nums中索引......
  • LeetCode2024年3月18日每日一题(303. 区域和检索 - 数组不可变)
    303.区域和检索-数组不可变一维前缀和定义构建前缀和数组区间求和示例适用场景题目代码解释成员变量构造函数`sumRange`方法注释版代码一维前缀和是处理数组区间求和问题的一种非常有效的方法。它通过预处理输入数组,使得任何区间的和都可以在常数时间内被计算......
  • 电气防火限流式保护器在住宅区域的功能与配置是怎样的?
    袁媛ACRELYY安科瑞电气股份有限公司电气防火限流式保护器主要功能功能1.短路保护功能。保护器实时监测用电线路电流,当线路发生短路故障时,能在150微秒内实现快速限流保护,并发出声光报警信号。2.过载保护功能。当被保护线路的电流过载且过载持续时间超过动作时间(3~60秒可......
  • Arduino RP2040 + SSD1306 I2C OLED +LittleFS存储GBK字库实现中文显示
    ArduinoRP2040+SSD1306I2COLED+LittleFS存储GBK字库实现中文显示......
  • 硕芯科技SX1308DCDC升压方案
    数据手册特征大致如下升压型DCDC2~24V电压输入4A开关电流限制SOT23-6超小封装最高28V输出电压典型应用电路图如下:输出电压与反馈电阻关系如下 VREF为0.6V,如下电路为输出5V时的电路配置其中EN为该芯片的转换使能引脚,注意此处是转换而不是输出,所以当该引脚为低电平时,......
  • QT QChart去掉边缘区域
     QChart默认会留白、端点处圆形化处理,需要人手修改1chart->layout()->setContentsMargins(0,0,0,0);2chart->setBackgroundRoundness(0); 修改后的效果......
  • 基于电力智能区域控制器的输电线路在线监测方案
    输电线路是电能输送、分配的重要通道,保障输电线路稳定、安全运行至关重要。由于输电线路长期暴露在自然环境中运行,不仅要经受机械载荷和电力负荷的作用,而且还受到大自然中雨雪、雷击、强风、大气侵蚀和物理外力等对输电线路的破坏。一旦发生故障,不仅会造成经济损失,还会对生产和生......