【力扣100】【好题】200.岛屿数量

添加链接描述

解法一:dfs

class Solution:def numIslands(self, grid: List[List[str]]) -> int:# 思路是dfs,使用一个指针遍历元素,如果找到1,就递归把跟这个1连着的1都变成0,用result记录结果if not grid or len(grid)==0:return result=0def dfs(grid,x,y,row,col):if x<0 or y<0 or x>row or y>col or grid[x][y]=='0':return grid[x][y]='0'dfs(grid,x+1,y,row,col)dfs(grid,x-1,y,row,col)dfs(grid,x,y+1,row,col)dfs(grid,x,y-1,row,col)for i in range(len(grid)):for j in range(len(grid[0])):if grid[i][j]=='1':result+=1dfs(grid,i,j,len(grid)-1,len(grid[0])-1)return result

思路:

  1. 把找到的1用递归的思路把它和它相邻的1都变成0
  2. 这样就可以一块一块的把所有相邻的岛屿找到

解法二:bfs

class Solution:def numIslands(self, grid: List[List[str]]) -> int:# 思路是使用bfs,使用队列对整个海域进行同化,也是把遇见的1都变为0if not grid or len(grid)==0:return que=collections.deque()reslut=0row=len(grid)col=len(grid[0])for i in range(row):for j in range(col):if grid[i][j]=='1':reslut+=1que.append([i,j])grid[i][j]='0'while que:cur=que.popleft()x=cur[0]y=cur[1]if x-1>=0 and grid[x-1][y]=='1':que.append([x-1,y])grid[x-1][y]='0'if y-1>=0 and grid[x][y-1]=='1':que.append([x,y-1])grid[x][y-1]='0'if x+1<row and grid[x+1][y]=='1':que.append([x+1,y])grid[x+1][y]='0'if y+1<col and grid[x][y+1]=='1':que.append([x,y+1])grid[x][y+1]='0'return reslut

思路:

  1. 使用bfs,使用队列,依然是把遍历到的1变成0,然后再找到这个1的上下左右,扫荡变为0
  2. 使用队列维护这个循环,注意放入队列中的是坐标,而不是节点
  3. 因为只有放坐标进去,我们才能对这个坐标的awsd进行扫荡

解法三:unionfind

未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/590474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何学习TS?

文章目录 一. 8种内置基础类型.ts二. void、never、any、unknown类型void类型never类型any类型unknown类型总结&#xff1a;void和any在项目中是比较常见的&#xff0c;never和unknown不常用。 三. 数组和函数类型定义.ts四. 元组与交叉类型使用元组数组一般有同类型的值组成&a…

AutoSAR(基础入门篇)4.9-Autoar_BSW小结

Autoar_BSW小结 Autoar_BSW小结 一、Autoar_BSW小结 1、BSW组件图 2、BSW的功能概述 3、BSW在工程里的应用实际工程

ubuntu 20.04 自由切换 python 的版本

问题描述 当前 ubuntu 20.04 默认安装了多个 python 的版本&#xff0c;执行 python 时&#xff0c;默认版本是 Python 2.7.18 zhangszzhangsz:~$ python Python 2.7.18 (default, Jul 1 2022, 12:27:04) [GCC 9.4.0] on linux2 Type "help", "copyright&quo…

url编码未转义导致参数丢失

原来的请求&#xff1a; "&url${ctx}/loanform/risk/loanItemRiskItemReport/main.ht?baseProductType${baseProductType}""&itemReportId"itemReportId修改后&#xff1a; 原因&#xff1a;请求地址拼接时&#xff0c;会判断name为url的属性是…

多模态大模型的前世今生

1 引言 前段时间 ChatGPT 进行了一轮重大更新&#xff1a;多模态上线&#xff0c;能说话&#xff0c;会看图&#xff01;微软发了一篇长达 166 页的 GPT-4V 测评论文&#xff0c;一时间又带起了一阵多模态的热议&#xff0c;随后像是 LLaVA-1.5、CogVLM、MiniGPT-5 等研究工作…

什么是IDE?新手用哪个IDE比较好?

什么是 IDE&#xff1f; IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;是提供给程序员用来编写代码的软件应用程序。一个 IDE 通常包含以下组件&#xff1a; 代码编辑器&#xff1a;支持编写和编辑源代码的文本编辑器。 编译器或解…

Impala4.x源码阅读笔记(三)——Impala如何管理Iceberg表元数据

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 上一篇文章Impala4.x源码阅读笔记&#xff0…

simulink代码生成(五)——ePWM模块初级应用

前面分别讲到了SCI及ADC的配置及使用&#xff0c;现在梳理一下ePWM的配置和使用&#xff1b; 先打一些基础的DSP28335的基础知识&#xff1b; F28335 关于ePWM中断与SOC采样信号的一些思考_socasel-CSDN博客 F28335 ePWM模块简介——TMS320F28335学习笔记&#xff08;四&…

【虹科分享】利用ProfiShark 构建便携式网络取证工具包

文章速览&#xff1a; 为什么要使用便携式网络取证工具&#xff1f;构建便携式网络取证套件法证分析ProfiShark 1G作为便携式分路器的优点 网络安全领域日益重视便携式取证工具的灵活应用。本文介绍了如何构建一个以ProfiShark 1G为核心的便携式网络取证工具包&#xff0c;以提…

YHZ011 Python 显式类型转换

资源编号&#xff1a;YHZ011 配套视频&#xff1a;https://www.bilibili.com/video/BV1zy4y1Z7nk?p12 &#x1f981; 显式类型转换 在显式类型转换中&#xff0c;用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换…

软件开发必知必会的计算机基础

1.计算机基本介绍 1.1 什么是计算机 计算机(Computer)俗称为电脑&#xff0c;计算机是一种高速计算的电子机器&#xff0c;计算机可以进行数值运算&#xff0c;逻辑判断&#xff0c;接收或者是存储信息数据(文本、图片、音频、视频)&#xff0c;按照存储在其内部的程序对海量的…

V8 环境搭建

前言 早就想入门V8了&#xff0c;但是之前环境配置搞了好几次都没成功&#xff0c;所以就放弃了。之前一直想着给虚拟机搭全局VPN &#xff0c;但是其实根本没那么麻烦。 准备 Ubuntu 18.04&#xff1a;据说该版本是最匹配V8的&#xff0c;当然也有说最好用 20.04 的&#x…

Vite+Vue3使用MockJS

在使用Vue3开发的时候&#xff0c;有时候没有后端或者后端接口还没有准备好&#xff0c;那就需要使用Mock模拟数据便于前端开发。 现在就记录一下ViteVue3的环境下如果使用MockJS。 版本 vue 3.3.11mockjs 1.1.0axios 1.6.3 Mockjs配置使用 使用pnpm命令安装Mockjs pnpm …

蓝桥杯python比赛历届真题99道经典练习题 (41-50)

【程序41】 题目:学习static定义静态变量的用法    1.程序分析: 2.程序源代码: # python没有这个功能了,只能这样了:) def varfunc():var = 0print var = %d % varvar += 1 if __name__ == __main__:for i in range(3):varfunc()# attribut of class # 作为类的一个属…

5.微服务代码模型

1.微服务代码模型 代码分层 在微服务代码模型里&#xff0c;我们分别定义了用户接口层、并分别为它们建立了interfaces、application、domain和infrastructure四个一级代码目录&#xff1b; interfaces(用户接口层): 它主要存放用户接口层与前端应用交互、数据转换和交互相关…

Ultra ISO 虚拟光驱修改光盘盘符

windows xp 环境 ultra iso 虚拟光驱修改光盘盘符 method 1. 在ultra iso 中 [选项]->[配置]->[虚拟光驱]&#xff0c;在新盘符里选指定盘符 ->[修改] method 2. 打开命令行&#xff0c;进入安装目录&#xff0c;如 "C:\Program Files\UltraISO\drivers"&…

Vue3复习笔记

目录 挂载全局属性和方法 v-bind一次绑定多个值 v-bind用在样式中 Vue指令绑定值 Vue指令绑定属性 动态属性的约束 Dom更新时机 ”可写的“计算属性 v-if与v-for不建议同时使用 v-for遍历对象 数组变化检测 事件修饰符 v-model用在表单类标签上 v-model还可以绑定…

【LMM 002】大型语言和视觉助手 LLaVA-1.5

论文标题&#xff1a;Improved Baselines with Visual Instruction Tuning 论文作者&#xff1a;Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee 作者单位&#xff1a;University of Wisconsin-Madison, Microsoft Research, Columbia University 论文原文&#xff1a;htt…

JavaScript的三种引入的方式

目录 (一).什么是JS1.1JS的特点1.2JS的组成 (二).JS引用的三种方式2.1标签引用&#xff08;或嵌入式)2.2文件引用&#xff08;外链式&#xff09;2.3行内式 (三).JS三种引用方式的优缺点1.行内方式&#xff1a;2.标签引用&#xff08;或嵌入式&#xff09;&#xff1a;3.文件引…

怎么获取客户端真实IP?GO

在使用 Golang 的 net/rpc 包进行 RPC 服务开发时&#xff0c;我们有时候会遇到需要获取客户端的真实 IP 和当前连接 net.Conn 的需求。然而在 net/rpc 的服务处理方法中&#xff0c;并没有提供直接获取到这些信息的途径。 那么&#xff0c;我们应该如何去获取这些信息呢&…