【Hot100】LeetCode—200. 岛屿数量

目录

  • 1- 思路
    • DFS 深搜
  • 2- 实现
    • ⭐200. 岛屿数量——题解思路
  • 3- ACM 思路


  • 题目连接:200. 岛屿数量

1- 思路

DFS 深搜

  • 在遍历中对 res 结果进行 ++ 操作 。
  • 遇到一个陆地结果为 1 的地方, 就将他们直接填充为 0

思路

  • ① 先遍历,收集 res
  • ② 之后通过 dfs 遇到岛屿,直接填充为 '0'

深搜三部曲

  • 递归参数返回值
  • 确认终止条件

2- 实现

⭐200. 岛屿数量——题解思路

在这里插入图片描述

class Solution {public int numIslands(char[][] grid) {int res = 0;for(int i = 0 ; i < grid.length;i++){for(int j = 0 ; j < grid[0].length;j++){if(grid[i][j]=='1'){res++;dfs(grid,i,j);}}}return res;}public void dfs(char[][] grid,int i ,int j){// 终止条件if(i<0 || i >= grid.length || j<0 || j>= grid[0].length || grid[i][j] == '0'){return ;}// 填充grid[i][j] = '0';dfs(grid,i-1,j);dfs(grid,i+1,j);dfs(grid,i,j+1);dfs(grid,i,j-1);}
}

3- ACM 思路

public class numIslands {public static int numIsland(char[][] grid){int res = 0;int m = grid.length;int n = grid[0].length;for(int i = 0 ; i < m ;i++){for(int j = 0 ; j < n;j++){if(grid[i][j] == '1'){res++;dfs(grid,i,j);}}}return res;}public static void dfs(char[][] grid,int i ,int j){// 终止条件if(i<0 || i>= grid.length || j<0 || j>grid[0].length || grid[i][j] =='0'){return ;}grid[i][j] = '0';dfs(grid,i-1,j);dfs(grid,i+1,j);dfs(grid,i,j-1);dfs(grid,i,j+1);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();input = input.substring(2, input.length()-2).replace("\"","");String[] rows = input.split("\\],\\[");int m = rows.length;int n = rows[0].split(",").length;char[][] grid = new char[m][n];int rIndex = 0;for(String str : rows){String[] row = str.split(",");for(int j = 0 ;  j < n;j++){grid[rIndex][j] = row[j].charAt(0);}rIndex++;}System.out.println("结果是"+numIsland(grid));}}

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

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

相关文章

LTSPICE使用教程:入门指导

1.常用快捷键 1.鼠标左键选择&#xff0c;鼠标右键取消&#xff0c;F7移动元器件 2.空格键&#xff1a;最大化显示 3.旋转&#xff1a;CtrlR 4.撤销&#xff1a;F9 5.删除&#xff1a;F5 6.退出编辑状态&#xff1a;ESC 7.元器件的镜像&#xff1a;Ctrle 8.原理图页面和…

viewBinding的使用(android studio)

引入 在开发安卓软件的时候&#xff0c;我们会大量的使用点击事件。通常情况下&#xff0c;我们是这样做的&#xff1a;将在xml文件里把目标组件添加id属性&#xff0c;如下&#xff1a; 然后在activity里面通过findViewById(R.id.back) 得到一个对象&#xff0c;通过对象调用…

mac和windows上安装nvm管理node版本

NVM 是 node version manager 的缩写&#xff0c;它是一个用来管理电脑上 node 版本的命令行工具&#xff0c;在日常前端开发中是一个跟 node 一样会经常用到的工具&#xff0c;可以很方便的让我们快速切换不同的node版本。 mac 上安装 nvm 1、下载安装 nvm 下载安装可以直…

Facebook的区块链战略:如何在社交媒体中实现去中心化

随着区块链技术的发展&#xff0c;Facebook&#xff08;现Meta&#xff09;正积极探索如何将这一技术整合进其社交平台中&#xff0c;以提升用户体验和数据安全。区块链技术以去中心化、透明性和不可篡改性为特点&#xff0c;为社交媒体带来了新的可能性。本文将探讨Facebook在…

在VB.net中,LINQ有什么方法与属性

标题 在VB.net中&#xff0c;LINQ有什么方法与属性 正文 在VB.NET中使用LINQ&#xff08;Language Integrated Query&#xff09;&#xff0c;你可以利用一系列的方法和属性来查询和操作内存中的集合&#xff08;如数组、列表等&#xff09;以及数据库等数据源。LINQ提供了丰富…

OpenGL笔记二十之深度检测概念

OpenGL笔记二十之深度检测概念 —— 2024-08-25 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记二十之深度检测概念1.课程PPT截图2.运行3.代码 1.课程PPT截图 2.运行 3.代码 关键部分 main.cpp #include <iostream>#include "glfra…

【学习笔记】STM32F407探索者HAL库开发(三)IO分配

【学习笔记】STM32F407探索者HAL库开发&#xff08;三&#xff09;IO分配 1 STM32F407 IO资源分配表2 STM32F407ZGT6 引脚定义3 IO分配的重要性3.1 硬件设计优化3.2 软件编程3.3 系统性能提升 4 F1/F7/H7芯片的IO分配差异4.1 引脚数量和分组4.2 功能模式4.2.1 输入模式4.2.2 输…

7-6 分段函数2

计算分段函数&#xff0c;测试数据分别是-1、5、12。 输入格式: 输入一个数。 输出格式: 直接输出保留6位小数的结果&#xff0c;没有其它任何附加字符&#xff0c;没有宽度控制。 输入样例: 11输出样例: 0.999912输入样例: 7输出样例: 8.000000 #include <stdio.h…

java之类和对象2

封装的概念&#xff1a;将数据和操作数据的方法进行有机结合&#xff0c;隐藏对象的属性和实现细节&#xff0c;仅对外公开接口来和对象进行 交互 。&#xff08;主要通过类和访问权限符进行封装&#xff09; 访问权限符的介绍&#xff1a; public:相同/不同包中的子类/非子类…

足球规则指南,快速入门一看就懂

保姆级足球规则指南&#xff0c;旨在帮助初学者快速入门&#xff0c;一看就懂。以下是精简而全面的指南&#xff1a; 一、比赛场地与球员 场地&#xff1a;足球比赛在长方形场地上进行&#xff0c;长度为101米&#xff0c;宽度为64米。场地两端设有球门&#xff0c;高2.44米&…

【git bash编码错误解决方案】启动conda环境时报错,其他terminal却正常

&#x1f50e;嘿&#xff0c;这里是慰慰&#x1f469;&#x1f3fb;‍&#x1f393;&#xff0c;会发各种类型的文章&#xff0c;智能专业&#xff0c;从事前端&#x1f43e; &#x1f389;如果有帮助的话&#xff0c;就点个赞叭&#xff0c;让我开心一下&#xff01;&#x1f…

2024网络安全学习路线 非常详细 推荐学习

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xff0c;有些人会倒在学习 linux 系统及命令的路上&#…

MacOS安装 Python 和 PyCharm

MacOS安装 Python3.12.5 和 PyCharm 小阿呜有话说一、MacOS安装PythonPython官网下载 二、MacOS安装PyCharmPyCharm官网下载 叮嘟&#xff01;这里是小啊呜的学习课程资料整理。好记性不如烂笔头&#xff0c;今天也是努力进步的一天。一起加油进阶吧&#xff01; 小阿呜有话说 …

CR80清洁卡:一款磁卡读卡设备广泛适用的清洁利器!

CR80清洁卡&#xff0c;专为磁卡读卡设备设计&#xff0c;是一款高效且广泛适用的清洁工具。CR80是国际标准中定义的卡片尺寸&#xff0c;即长85.60mm、宽53.98mm&#xff0c;这种尺寸的卡片广泛应用于身份证、银行卡、门禁卡、会员卡等多种场合。因此&#xff0c;CR80清洁卡特…

【PyQt】切换界面的实现

前言一、介绍二、代码2.1 QStackedWidget2.1.1 代码2.1.2 运行结果展示 2.2 QTabWidget2.2.1 代码2.2.2 运行结果展示 2.3 QDockWidget2.3.1 代码2.3.2 运行结果展示 PULSE结果 总结 前言 实现几个界面的切换展示的效果。 一、介绍 在 PyQt 中实现一个主界面包含其他子界面的…

Vue3 获取农历(阴历)日期,并封装日历展示组件

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是码喽的自我修养&#xff01;今天给大家分享vue3项目中使用 chinese-lunar-calendar 插件获取农历(阴历)日期&#xff0c;并封装了日历展示组件&#xff01;提供了具体的代码帮助大家深入理解&#xff0c;彻底掌握&#…

【SpringBoot】11 多数据源(MyBatis:dynamic-datasource)

介绍 多数据源&#xff1a;指的是一个单一应用程序中涉及了两个及以上的数据库&#xff0c;这种配置允许应用程序根据业务需求灵活地管理和操作不同的数据库。 需求 一个应用服务中&#xff0c;连接多个数据库&#xff0c;有本地的也有远程的&#xff0c;有MysQL、Oracle、P…

Python和MATLAB梯度下降导图

&#x1f3af;要点 寻找局部最小值普通最小二乘法和随机梯度下降的动量线性回归媒体广告销售光学字符识别和最小化均方误差男女医疗费用最快速下降方向函数优化等高线图可视化共轭梯度下降可视化损失函数、动量、涅斯特洛夫动量、权衰减量化不确定性拓扑结构算法分类中权重归一…

Threejs学习-三维坐标系、相机控件

坐标系&#xff1a; Three.js 使用的是右手坐标系&#xff0c;x 轴朝右&#xff0c;y 轴朝上&#xff0c;z 轴朝向自己。 相机控件轨道控制器 相机控件OrbitControls 通过相机控件OrbitControls实现旋转缩放预览效果。 // 设置相机控件轨道控制器OrbitControls const contr…

OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 反转一个仿射变换。 该函数计算由 23 矩阵 M 表示的逆仿射变换&#xff1a; [ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a…