原题地址:https://oj.leetcode.com/problems/surrounded-regions/

题意:

Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.

A region is captured by flipping all 'O's into 'X's in that surrounded region.

For example,

X X X X
X O O X
X X O X
X O X X

After running your function, the board should be:

X X X X
X X X X
X X X X
X O X X

解题思路:这道题可以使用BFS和DFS两种方法来解决。DFS会超时。BFS可以AC。从边上开始搜索,如果是'O',那么搜索'O'周围的元素,并将'O'置换为'D',这样每条边都DFS或者BFS一遍。而内部的'O'是不会改变的。这样下来,没有被围住的'O'全都被置换成了'D',被围住的'O'还是'O',没有改变。然后遍历一遍,将'O'置换为'X',将'D'置换为'O'。

dfs代码,因为递归深度的问题会爆栈:

class Solution:# @param board, a 9x9 2D array# Capture all regions by modifying the input board in-place.# Do not return any value.def solve(self, board):def dfs(x, y):if x<0 or x>m-1 or y<0 or y>n-1 or board[x][y]!='O':returnboard[x][y] = 'D'dfs(x-1, y)dfs(x+1, y)dfs(x, y+1)dfs(x, y-1)if len(board) == 0: returnm = len(board); n = len(board[0])for i in range(m):dfs(i, 0); dfs(i, n-1)for j in range(1, n-1):dfs(0, j); dfs(m-1, j)for i in range(m):for j in range(n):if board[i][j] == 'O': board[i][j] == 'X'elif board[i][j] == 'D': board[i][j] == 'O'

bfs代码:

class Solution:# @param board, a 9x9 2D array# Capture all regions by modifying the input board in-place.# Do not return any value.def solve(self, board):def fill(x, y):if x<0 or x>m-1 or y<0 or y>n-1 or board[x][y] != 'O': returnqueue.append((x,y))board[x][y]='D'def bfs(x, y):if board[x][y]=='O':queue.append((x,y)); fill(x,y)while queue:curr=queue.pop(0); i=curr[0]; j=curr[1]fill(i+1,j);fill(i-1,j);fill(i,j+1);fill(i,j-1)if len(board)==0: returnm=len(board); n=len(board[0]); queue=[]for i in range(n):bfs(0,i); bfs(m-1,i)for j in range(1, m-1):bfs(j,0); bfs(j,n-1)for i in range(m):for j in range(n):if board[i][j] == 'D': board[i][j] = 'O'elif board[i][j] == 'O': board[i][j] = 'X'

[leetcode]Surrounded Regions @ Python相关推荐

  1. LeetCode Surrounded Regions(floodfill算法)

    问题:一个由X,O字符填充的二维数组,问由O包围起来的X,其中O与边界的不计算在内. 思路:floodfill算法 ,先求出O构成的连通,将这些剔除后,就是由O包围起来的X 具体代码参考: https ...

  2. LeetCode: Surrounded Regions [130]

    [题目] Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is cap ...

  3. [LeetCode] Surrounded Regions, Solution

    http://fisherlei.blogspot.com/search?q=Surrounded+Region 特别说一下,里面实现bfs的code挺有意思的 int k =0; 20: while ...

  4. 【BFS】LeetCode 130. Surrounded Regions

    LeetCode 130. Surrounded Regions Solution1:我的答案 利用bfs解决,超过98.7%的答案,还不错.关键是简单易懂! class Solution { pub ...

  5. LeetCode刷题Python实录

    使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...

  6. leetcode @python 130. Surrounded Regions

    题目链接 https://leetcode.com/problems/surrounded-regions/ 题目原文 Given a 2D board containing 'X' and 'O', ...

  7. [LeetCode] 130. Surrounded Regions Java

    题目:Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A ...

  8. 利用BFS和DFS解决 LeetCode 130: Surrounded Regions

    问题来源 此题来源于LEETCODE,具体问题详见下面的链接 https://leetcode.com/problems/surrounded-regions/description/ 问题简述 给定 ...

  9. LeetCode OJ - Surrounded Regions

    题目: Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is capt ...

最新文章

  1. Java中的移位操作以及基本数据类型转换成字节数组【收集】
  2. python 3d绘图 拖动_使用python-matplotlib连续3D绘图(即图形更新)?
  3. clojure java.jdbc_Clojure驱动的Web开发
  4. SAP Cloud for Customer的前世今生
  5. 面试39 MySQL读写分离
  6. Redis安装[Windows]
  7. Redis数据类型使用场景及有序集合SortedSet底层实现详解
  8. 数学建模优化模型简单例题_数学建模案例分析--最优化方法建模7习题六
  9. 下载列表失败_Mac配置的Motrix,高速下载百度云
  10. Python chardet
  11. ArcGIS中ERROR 999999报错Configuration RasterCommander ImageServer can not be started解决
  12. UiPath-定时任务原理
  13. 论文阅读: Anomaly Detection with Partially Observed Anomalies
  14. 如何使用启动盘启动计算机,电脑重装系统怎么设置用U盘启动盘引导?
  15. 公用电信网间互联管理规定
  16. 华为鸿蒙HarmonyOS 简介
  17. ios 自带录屏框架replayKit的使用
  18. 递归专题---[2]开根号
  19. 1bit和1byte_带宽单位是位(bit)网速单位是字节(Byte)1字节等于8位
  20. 计算机专业考研要分最低的院校,计算机考研院校难度排行榜

热门文章

  1. Java项目:在线水果商城系统(java+JSP+Spring+SpringMVC +MyBatis+html+mysql)
  2. python语音合成 标贝_tacotronV2 + wavernn 实现中文语音合成(Tensorflow + pytorch)
  3. mysql 5.6.15_mysql-5.6.15-win32.zip免安装配置
  4. IDEA配置GitHub报错GitHub Invalid authentication data.404 Not Found-Not Found
  5. python如何实现找图_利用OpenCV和Python实现查找图片差异
  6. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(3):构造具有个人特色的MVP模式
  7. VUE 监听当前路由 侦听器 watch
  8. React 事件 4
  9. iOS scrollToItemAtIndexPath 无效的解决方案
  10. UITableView嵌套WKWebView的那些坑