代码随想录算法训练营第五六天| 99. 岛屿数量 100. 岛屿的最大面积
今日任务
99. 岛屿数量 深度搜搜
99. 岛屿数量 广度搜索
100. 岛屿的最大面积
99. 岛屿数量
题目链接: 99. 岛屿数量
import java.util.Scanner;public class Main {public static int[][] dir = {{0, 1},{1, 0},{-1, 0},{0, -1}};public static void dfs(boolean[][] visited, int x, int y, int[][] grid) {for (int i = 0; i < 4; i++) {int nextX = x + dir[i][0];int nextY = y + dir[i][1];if (nextX < 0 || nextY < 0 || nextX >= grid.length || nextY >= grid[0].length) {continue;}if (!visited[nextX][nextY] && grid[nextX][nextY] == 1) {visited[nextX][nextY] = true;dfs(visited, nextX, nextY, grid);}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();int[][] grid = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = scanner.nextInt();}}boolean[][] visited = new boolean[m][n];int res = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!visited[i][j] && grid[i][j] == 1) {res++;visited[i][j] = true;dfs(visited, i, j, grid);}}}System.out.println(res);}}
99. 岛屿数量
题目链接: 99. 岛屿数量
import java.util.Scanner;
import java.util.*;public class Main {public static int[][] dir = {{0, 1},{1, 0},{-1, 0},{0, -1}};public static void bfs(boolean[][] visited, int x, int y, int[][] grid){Queue<int[]> queue = new LinkedList<>();queue.add(new int[]{x, y});visited[x][y] = true;while (!queue.isEmpty()) {int curX = queue.peek()[0];int curY = queue.peek()[1];queue.poll();for (int i = 0; i < 4; i++) {int nextX = curX + dir[i][0];int nextY = curY + dir[i][1];if (nextX < 0 || nextY < 0 || nextX >= grid.length || nextY >= grid[0].length) {continue;}if (!visited[nextX][nextY] && grid[nextX][nextY] == 1) {queue.add(new int[]{nextX, nextY});visited[nextX][nextY] = true;}}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();int[][] grid = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = scanner.nextInt();}}int res = 0;boolean[][] visited = new boolean[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!visited[i][j] && grid[i][j] == 1) {res++;bfs(visited, i, j, grid);}}}System.out.println(res);}}
100. 岛屿的最大面积
题目链接: 100. 岛屿的最大面积
import java.util.*;
public class Main {public static int[][] dir = {{0, 1},{1, 0},{-1, 0},{0, -1}};public static int res = 0;public static void bfs(boolean[][] visited, int x, int y, int[][] grid){Queue<int[]> queue = new LinkedList<>();queue.add(new int[]{x, y});visited[x][y] = true;while (!queue.isEmpty()) {int curX = queue.peek()[0];int curY = queue.peek()[1];queue.poll();for (int i = 0; i < 4; i++) {int nextX = curX + dir[i][0];int nextY = curY + dir[i][1];if (nextX < 0 || nextY < 0 || nextX >= grid.length || nextY >= grid[0].length) {continue;}if (!visited[nextX][nextY] && grid[nextX][nextY] == 1) {res++;queue.add(new int[]{nextX, nextY});visited[nextX][nextY] = true;}}}}public static void main(String[] args){Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();int[][] grid = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = scanner.nextInt();}}int max = 0;boolean[][] visited = new boolean[grid.length][grid[0].length];for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (!visited[i][j] && grid[i][j] == 1) {res = 1;visited[i][j] = true;bfs(visited, i, j, grid);}max = Math.max(max, res);}}System.out.println(max);} }
相关文章:

代码随想录算法训练营第五六天| 99. 岛屿数量 100. 岛屿的最大面积
今日任务 99. 岛屿数量 深度搜搜 99. 岛屿数量 广度搜索 100. 岛屿的最大面积 99. 岛屿数量 题目链接: 99. 岛屿数量 import java.util.Scanner;public class Main {public static int[][] dir {{0, 1},{1, 0},{-1, 0},{0, -1}};public static void dfs(boolean…...

图解 微信开发者工具 小程序源码 调试、断点标记方法 , 微信小程序调试器,真机调试断点调试方法,小程序网络API请求调试方法 总结
在我们使用微信开发者工具进行微信小程序开发的时候,在这个微信开发者工具的代码编辑框里面我们是无法像使用vscode, idea等IDE工具时那样直接对代码打断点进行调试, 原因是小程序实际上他就是一个web浏览器应用的包装, 在其内部使用的还是类似chrome的…...

注释,换行,控制台输入输出,命名空间,省略return语句
注释 1.单行注释 // 2.多行注释 /*注释内容*/ 解释代码的作用;注释多余内容;注释不会影响代码执行 换行 \nstd::endl 控制台输入输出 输出123456 可一次性输出多个 std::cout<<"123456"//示例获取控制台输入内容,存储在…...

宠物空气净化器该怎么选?希喂,小米、安德迈这三款好用吗?
不得不说,虽然现在购物网站的活动不少,可力度都好弱啊!我想买宠物空气净化器很久了,觉得有点贵,一直没舍得入手。价格一直没变化,平台小活动根本没什么优惠,只能寄希望于双十一了,准…...

【Mybatis篇】Mybatis的注解开发
🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …...

NEC协议
NEC协议是一种红外线通信协议,广泛应用于家电遥控器和其他红外线设备之间的通信。以下是对NEC协议的详细解释和介绍: 一、开发背景与应用 NEC协议由日本电子公司NEC(日本电气公司)开发,因其简单、易于实现和广泛兼容…...

Meta 发布 Quest 3S 头显及 AR 眼镜原型:开启未来交互新视界
简介 在科技的浪潮中,Meta 始终站在创新的前沿,不断为我们带来令人惊叹的虚拟现实和增强现实体验。2024 年 10 月 6 日,让我们一同聚焦 Meta 最新发布的 Quest 3S 头显及 AR 眼镜原型(Orion),探索这两款产品…...

【CSS】水平垂直居中
给父盒子设置属性 flex display: flex;写在父元素上这就是定义了一个伸缩容器justify-content:center 设置主轴对齐方式为居中,默认是横轴。子元素居中。align-items:center 设置纵轴对齐方式为居中,默认是纵轴。子元素居中。 给…...

欧盟零毁林法案 EUDR
EUDR法案,即欧盟零毁林法案(EU Deforestation Regulation),是欧盟为了减少全球森林砍伐和退化,应对气候变化和生物多样性丧失而制定的一项重要法规。以下是对该法案的详细解读: 一、法案背景与目的 EUDR法…...

26.删除有序数组中的重复项
题目::26. 删除有序数组中的重复项 - 力扣(LeetCode) 思路:只要不和前面的数一样就可以移动指针,进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …...

JAVA实现公众号扫码登录和关注功能实战
前言 使用第三方插件 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.6.0</version> </dependency>准备APPID和appSecet 登录微信公众号后台,复制ap…...

初识Mysql/备份,基础指令
1,MySQL登录指令: mysql -h 127.0.0.1 -P3306 -u -p 其中,-h指明登录部署了mysql服务的主机 -P指明要访问的端口号, -u指明登录用户 -p输入密码 2,数据库基础 mysql:表示的是客户端 mysqld&…...

没想到吧!线稿上色居然可以这么简单
前言 在创意无限的数字艺术世界里,艺术创作中的线稿上色,向来是件既费时又需技巧的活儿,寻找一款既能激发灵感又能简化繁琐流程的工具,是每位艺术家心中的向往。 今天,为大家推荐一款革命性的线稿上色AI工具——千鹿…...

修改Docker的默认存储路径
docker默认存储路径:/var/lib/docker/ 执行 docker info 查看,得到以下信息 Docker Root Dir: /var/lib/docker/Debug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries: 1.修改docker配置 要修改默认…...

深入计算机语言之C++:C到C++的过度
🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 一、什么是C C(c plus plusÿ…...

HR面试篇
一.面试中被问职业规划 HR感兴趣的不是你的职业规划,感兴趣的是你的职业规划和他们公司有没有关系。 或者说他们公司能不能去帮助你去实现你的职业规划。 切忌不要讲不合实际的,比如要在公司赚多少钱等等。 要根据公司的特点,找到切入点,只要讲得积极向上就可以。 二.…...

深度探索Kali Linux的精髓与实践应用
Kali Linux简介 Kali Linux作为全球网络安全领域的首选操作系统之一,其强大的功能性及广泛的适用范围令人瞩目。除了上述基础介绍外,让我们深入探究Kali Linux的几个关键特性及其在实际操作中的具体应用案例。 Kali工具集成:全面的安全工具…...

【在Linux世界中追寻伟大的One Piece】DNS与ICMP
目录 1 -> DNS(Domain Name System) 1.1 -> DNS背景 2 -> 域名简介 2.1 -> 域名解析过程 3 -> 使用dig工具分析DNS 4 -> ICMP协议 4.1 -> ICMP功能 4.2 -> ICMP报文格式 4.3 -> Ping命令 4.4 -> traceroute命令 1 -> DNS(Domain Na…...

信息安全工程师(41)VPN概述
前言 VPN,即Virtual Private Network(虚拟专用网络)的缩写,是一种通过公共网络(如互联网)创建私密连接的技术。 一、定义与工作原理 定义:VPN是依靠ISP(Internet Service Provider&…...

算法:双指针系列(一)
双指针系列 一、移动零(一)题目分析(二)代码展示二、复写零(一)题目分析(二)代码展示三、快乐数(一)题目分析(二)代码展示(…...

跟《经济学人》学英文:2024年09月28日这期 The curse of the Michelin star
The curse of the Michelin star Restaurants awarded the honour are more likely to close, research finds 原文: The twelve new restaurants added to the New York Michelin Guide this month, serving up cuisine ranging from “haute French” to “eco…...

Java Set 的介绍与实现原理
什么是 Set 在 Java 中,Set 是一种集合类型,它不允许重复的元素。Set 接口是 Java Collections Framework 的一部分,主要用于存储不重复的值。常见的实现类包括 HashSet、LinkedHashSet 和 TreeSet。 实现原理 1. HashSet HashSet 是最常…...

我谈均值平滑模板——给均值平滑模板上升理论高度
均值平滑(Mean Smoothing),也称为盒状滤波(Box Filter),通过计算一个像素及其周围像素的平均值来替换该像素的原始值,从而达到平滑图像的效果。 均值平滑通常使用一个模板(或称为卷…...

WordPress添加https协议致使后台打不开解决方法
由于删除WordPress缓存插件后操作不当,在加上升级处理,致使茹莱神兽博客的首页出现了https不兼容问题,WordPress后台也无法登陆,链接被误认为是定向重置次数过多,在网上找了好久的答案。 还有就是求助了好些人…...

如何使用pymysql和psycopg2执行SQL语句
在Python中,pymysql和psycopg2是两个非常流行的库,用于与MySQL和PostgreSQL数据库进行交互。本文将详细介绍如何使用这两个库来执行SQL查询、插入、更新和删除操作。 1. 准备工作 首先,确保已经安装了pymysql和psycopg2库。如果尚未安装&a…...

linux无法使用ll命令
ll命令是ls -l的别名,无法使用通常是该用户没有该别名配置,只需要简单添加即可使用 修改~/.bashrc # 备份 cp ~/.bashrc ~/.bashrc.source # 编辑 vim ~/.bashrc添加如下内容 # 别名 alias llls -l加载配置 source ~/.bashrc...

STM32输入捕获模式详解(上篇):原理、测频法与测周法
1. 前言 在嵌入式系统的开发过程中,常常需要对外部信号进行精确的时间测量,如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源,其中的输入捕获(Input Capture, IC)模式能实现对信号的…...

面试中遇到的关于Transformer模型的问题有哪些?
Transformer是深度学习中极具影响力的模型架构之一,广泛应用于自然语言处理、计算机视觉等领域。它通过自注意力机制和并行计算等特点,取得了比传统模型(如RNN、LSTM)更优异的性能。本文将针对Transformer的多个关键问题进行详细探…...

【UE】自动添加Megascans所有资产到自己的账户
1. 复制如下代码: ((async (startPage 0, autoClearConsole true) > {const getCookie (name) > {const value ; ${document.cookie};const parts value.split(; ${name});if (parts.length 2) return parts.pop().split(;).shift();}const callCacheA…...

【函数】4.函数的单调性
本节课没有笔记示例,自己做好笔记! 复合函数的单调性 最值 没讲 提醒我...