当前位置: 首页 > news >正文

深度优先搜索|130, 200

深度优先搜索|130. 被围绕的区域, 200. 岛屿数量

  • 被围绕的区域
  • 岛屿数量

被围绕的区域

这个题应该是从外到里做,我们应该去找和外圈的’O’相通的所有’O’,而不是去找内圈被包围的’O’。
所以我们做的就是从边界的’O’出发,把和他相连的所有’O’都标为’A’,也就是说遍历到最后,没有被接触过的(还是’O’)的那些就一定是被包围的。
那么把所有标为’A’的(没有被包围的’O’)转回’O’;然后把所有没被碰过的’O’(被包围的)转成’X’。

class Solution:def solve(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""def direction(i,j,m,n):l = [[i-1,j],[i+1,j],[i,j-1],[i,j+1]]if i == 0:l.remove([i-1,j])if j == 0:l.remove([i,j-1])if i == m-1:l.remove([i+1,j])if j == n-1:l.remove([i,j+1])return lm = len(board)n = len(board[0])used = [[False]*n for _ in range(m)]def backtracking(i,j):if board[i][j] != 'O': return board[i][j] = 'A'l = direction(i,j,m,n)#print(i,j,l)#print(board)for k1,k2 in l:backtracking(k1,k2)for i in range(m):backtracking(i,0)backtracking(i,n-1)for j in range(n):backtracking(0,j)backtracking(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'

岛屿数量

和上一题一样,从边界的岛开始一路往里找连接的岛,而且题目说的很清晰。

class Solution:def numIslands(self, grid: List[List[str]]) -> int:def direction(i,j,m,n):l = [[i-1,j],[i+1,j],[i,j-1],[i,j+1]]if i == 0:l.remove([i-1,j])if j == 0:l.remove([i,j-1])if i == m-1:l.remove([i+1,j])if j == n-1:l.remove([i,j+1])return lm = len(grid)n = len(grid[0])used = [[False]*n for _ in range(m)]def backtracking(i,j):if grid[i][j] == '0': returnused[i][j] = Truel = direction(i,j,m,n)for k1,k2 in l:if used[k1][k2]: continue backtracking(k1,k2)res = 0for i in range(m):for j in range(n):if used[i][j] or grid[i][j] == '0': continuebacktracking(i,j)res += 1return res
http://www.lryc.cn/news/108176.html

相关文章:

  • go-resty
  • 香港服务器速度不稳定的原因有哪些
  • 企业架构NOSQL数据库之MongoDB
  • 鸟哥马哥共叙Linux发展
  • OpenCV中常用算子
  • Android 11.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现
  • 【JavaSE】面向对象编程思想之继承
  • Golang make和new的区别
  • (前后端交互式)Ajax上传图片 + 更换背景图片
  • 自媒体常见玩法
  • 【react】react生命周期钩子函数:
  • CRM系统哪些功能可以个性化定制?
  • 51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验二 LED闪烁
  • PaperEdge 文档图像矫正
  • 入门NLTK:Python自然语言处理库初级教程
  • Android 死机问题学习笔记
  • 企业内网终端安全无客户端准入控制技术实践
  • Android 开发代码规范
  • c语言(函数)
  • OPENCV C++(二)直方图+分离颜色通道+画圆画线画矩形
  • SpringBoot(2.7.x)中使用PageHelper
  • 【HarmonyOS】API9网络buffer图片加载
  • 【前端实习生备战秋招】—HTML 和 CSS面试题总结(二)
  • 操作系统知识点总结
  • (C++) 多线程之生产者消费者问题
  • 【C语言学习】逃逸字符(转义字符)
  • 开发手册|Java后端开发规范重点条目整理
  • c++11 标准模板(STL)(std::basic_ofstream)(二)
  • k8s概念-pv和pvc
  • python算法指南程序员经典,python算法教程pdf百度云