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

48-51 图论

48. 岛屿数量

给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

class Solution(object): def numIslands(self, grid): m,n=len(grid),len(grid[0]) res=0 def DFS(x,y,m,n,grid): if x>=0 and x<m and y<n and y>=0 and grid[x][y]=="1" : grid[x][y]="0" DFS(x+1,y,m,n,grid) DFS(x-1,y,m,n,grid) DFS(x,y-1,m,n,grid) DFS(x,y+1,m,n,grid) for i in range(m): for j in range(n): if grid[i][j]=="1" : res+=1 DFS(i,j,m,n,grid) return res

49. 腐烂的橘子

在给定的m x n网格grid中,每个单元格可以有以下三个值之一:

  • 0代表空单元格;
  • 1代表新鲜橘子;
  • 2代表腐烂的橘子。

每分钟,腐烂的橘子周围 4 个方向上相邻的新鲜橘子都会腐烂。

返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1

from collections import deque class Solution(object): def orangesRotting(self, grid): dire=[[1,0],[-1,0],[0,1],[0,-1]] dq=deque() res=-1 count=0 fresh=0 m,n=len(grid),len(grid[0]) for i in range(m): for j in range(n): if grid[i][j]==2: dq.append([i,j]) count=len(dq) if grid[i][j]==1: fresh+=1 if not count and not fresh: return 0 while dq: cur=dq.popleft() for d in dire: x,y=cur[0]+d[0],cur[1]+d[1] if x>=0 and x<m and y>=0 and y<n and grid[x][y]==1: grid[x][y]=2 fresh-=1 dq.append([x,y]) count-=1 if not count: count=len(dq) res+=1 if fresh==0: return res return -1

50. 课程表

你这个学期必须选修numCourses门课程,记为0numCourses - 1

在选修某些课程之前需要一些先修课程。 先修课程按数组prerequisites给出,其中prerequisites[i] = [ai, bi],表示如果要学习课程ai必须先学习课程bi

  • 例如,先修课程对[0, 1]表示:想要学习课程0,你需要先完成课程1

请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false

class Solution(object): def canFinish(self, numCourses, prerequisites): grid=[[0]*numCourses for _ in range(numCourses)] for _ in prerequisites: grid[_[0]][_[1]]=1 self.falg=[0]*numCourses self.res=True def DFS(grid,x,n): if x>=0 and x<n : self.falg[x]=1 for i in range(n): if grid[x][i]==1 : if self.falg[i]==0: DFS(grid,i,n) elif self.falg[i]==1: self.res=False self.falg[x]=2 for i in range(numCourses): for j in range(numCourses): if grid[i][j]==1 and self.falg[i]==0: DFS(grid,i,numCourses) return self.res
http://www.jsqmd.com/news/819786/

相关文章:

  • Churrera CLI:命令行模板引擎,提升开发运维自动化效率
  • ARMv8-A架构SCTLR_EL3寄存器详解与安全配置
  • 基于MCP协议扩展Cursor AI能力:实现十倍编程效率的实战指南
  • 基于拓扑结构的多智能体协同系统:从概念到工程实践
  • 边缘计算与决策树模型在生物记录仪中的应用
  • 酒店布草批发哪家好?色织酒店布草厂家推荐哪家?2026专业民宿布草供应商推荐:酒店布草定制源头厂家+酒店布草源头工厂推荐 - 栗子测评
  • ARMv8系统寄存器解析:AIDR_EL1与ALLINT详解
  • JUZI-RAGnet:轻量级中文RAG引擎部署与优化实战指南
  • 2026年评价高的铜陵食品经营许可证代办服务/铜陵安全生产许可证代办服务/铜陵危化品经营许可证代办服务/铜陵外汇备案代办服务行业公司推荐 - 行业平台推荐
  • Ubuntu20.04上搞定向日葵远程控制:从下载到解决‘libwebkitgtk-3.0-0’依赖报错的全流程
  • 77GHz FMCW雷达信号线性度测试与优化实践
  • ARM GICv3中断控制器架构与ICC_CTLR_EL3寄存器解析
  • 全自动助力机械手哪家好?2026码垛机械手厂家/工业机械臂厂家/自动上下料机械手厂家汇总与推荐:海骏自动化领衔 - 栗子测评
  • 开源销售线索分析引擎OpenClaw:从数据清洗到智能路由的实战指南
  • 进口家装ppr水管/进口ppr管/进口ppr水管管材哪家好?进口家装PPR管有哪些?2026进口家装ppr水管品牌十大 - 栗子测评
  • Prompt-Architect:大语言模型提示词的工程化开发框架
  • PIC单片机DCO数控振荡器:原理、配置与动态调频实战
  • 性能调优与成本控制:Spring AI 的缓存、限流与模型降级策略
  • 基于MCP协议构建个人AI助手:本地化读取Mac消息数据库实践
  • Ubuntu 22.04 下从零构建 PyTorch 开发环境:避坑指南与最佳实践
  • 2026年质量好的物业保洁服务/长期保洁服务/保洁服务/写字楼保洁服务热选公司推荐 - 行业平台推荐
  • 原装进口ppr管有哪些?2026进口水管十大品牌推荐:进口ppr管/进口ppr水管品牌前十 - 栗子测评
  • OpenAshare:开源AI应用平台的设计理念与实战指南
  • 微生物实验室装修公司哪家好?2026专业微生物实验室装修公司|低露点实验室装修公司推荐:驰川建设领衔 - 栗子测评
  • 从RJ11到RJ45:一文搞懂电话线和水晶头的区别,别再插错了!
  • Windows安卓应用安装器终极指南:告别模拟器的轻量级方案
  • 基于 HarmonyOS 6.0 的校园二手交易页面实战开发:从页面构建到组件化设计深度解析
  • 全链路监控与可观测性:Spring AI 应用的日志、追踪与告警体系
  • 2026年质量好的水泥砂浆/抗裂砂浆批量采购厂家推荐 - 行业平台推荐
  • Node.js语音技能开发:使用skill-sdk构建高效可维护的智能对话应用