代码随想录Day53|102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
102.沉没孤岛
import java.util.*;class Main{public static int[][] dir = {{0,1},{1,0},{0,-1},{-1,0}};public static void main (String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[][] grid = new int[n][m];for(int i = 0; i <n; i++){for(int j = 0; j<m; j++){grid[i][j] = sc.nextInt();}}boolean[][] visited = new boolean[n][m];for(int i = 0; i < n; i++){if(grid[i][0] == 1 && visited[i][0] == false){dfs(grid,visited,i,0);}if(grid[i][m-1] == 1 && visited[i][m-1] == false){dfs(grid,visited,i,m-1);}}//遍历上下边界for(int j = 0; j <= m-1; j++){if(grid[0][j] == 1 && visited[0][j] == false){dfs(grid,visited,0,j);}if(grid[n-1][j] == 1 && visited[n-1][j] == false){dfs(grid,visited,n-1,j);}}for(int i = 0; i < n; i++){for(int j = 0; j< m; j++){if(grid[i][j] == 1) grid[i][j] = 0;if(grid[i][j] == 2) grid[i][j] = 1;}}for(int i = 0; i < n; i++ ){for(int j = 0; j< m; j++){System.out.print(grid[i][j]+" ");}System.out.println();}}public static void dfs(int[][] grid, boolean[][] visited, int x,int y){if(visited[x][y] == true || grid[x][y] == 0){return;}grid[x][y] = 2;visited[x][y] = true;for(int i = 0; i<4; i++){int nextX = x + dir[i][0];int nextY = y + dir[i][1];if(nextY < 0 || nextY >= grid[0].length || nextX < 0 || nextX >= grid.length){continue;}dfs(grid,visited,nextX,nextY);}}
}
103.水流问题
import java.util.*;class Main{public static int[][] dir = {{1,0},{0,1},{-1,0},{0,-1}};public static void main (String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[][] grid = new int[n][m];for(int i = 0; i < n; i++){for(int j = 0; j< m; j++){grid[i][j] = sc.nextInt();}}//初始化边界boolean[][] firstBound = new boolean[n][m],secondBound = new boolean[n][m];//遍历左边界和有边界for(int i = 0; i < n; i++){dfs(grid,i,0,firstBound);dfs(grid,i,m-1,secondBound);}//遍历上边界和下边界for(int i = 0; i <m; i++){dfs(grid,0,i,firstBound);dfs(grid,n-1,i,secondBound);}for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(firstBound[i][j] && secondBound[i][j]){System.out.println(i+" " + j);}}}}public static void dfs(int[][] grid,int x,int y,boolean[][] visited){//不能放在遍历里面,否则刚进来第一组没办法变成truevisited[x][y] = true;for(int i = 0; i < 4; i++){int nextX= x + dir[i][0];int nextY = y + dir[i][1];if( nextX <0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length || grid[nextX][nextY] < grid[x][y] ||visited[nextX][nextY]){continue;}dfs(grid,nextX,nextY,visited);}}
}
104.建造最大岛屿
import java.util.*;class Main{public static int[][] dirs = {{1,0},{0,1},{-1,0},{0,-1}};static int count = 0;static int tag = 2;public static void main (String[] args) {/* code */Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[][] grid = new int[n][m];boolean[][] visited = new boolean[n][m];for(int i = 0; i< n; i++){for(int j = 0; j< m; j++){grid[i][j] = sc.nextInt();}}boolean totalIsland = true;//遍历记录面积Map<Integer,Integer> countArea = new HashMap<>();for(int i = 0; i<n; i++){for(int j = 0; j< m; j++){if(grid[i][j] == 0) totalIsland = false;if( !visited[i][j] && grid[i][j] != 0){count = 0;dfs(grid,visited,i,j);countArea.put(tag++,count);}}}/*/打印数组for(int i = 0; i< n; i++){for(int j = 0; j< m; j++){System.out.print(grid[i][j] + " ");}System.out.println();}//*/int res = 1;HashSet<Integer> island = new HashSet<>();int flag = 0;//再次遍历添加小岛for(int i = 0; i<n; i++){for(int j = 0; j< m; j++){if(grid[i][j] == 0){int area = 1;island.clear();for(int dir[]:dirs){int nextX = i + dir[0];int nextY = j + dir[1];if(nextX < 0 || nextX >= grid.length || nextY < 0|| nextY >= grid[0].length) continue;flag =grid[nextX][nextY];if(!island.contains(flag) && countArea.containsKey(flag)){area+=countArea.get(flag);island.add(flag);}}res = Math.max(area,res);}}}if(totalIsland == false){System.out.println(res);}else{System.out.println(m*n);}}public static void dfs(int[][] grid, boolean[][] visited, int x, int y){visited[x][y] = true;grid[x][y] = tag;count++;for(int[] dir: dirs){int nextX = x + dir[0];int nextY = y + dir[1];if(nextX < 0 || nextX >= grid.length || nextY < 0|| nextY >= grid[0].length || visited[nextX][nextY] || grid[nextX][nextY] == 0){continue;}dfs(grid, visited, nextX, nextY);}}
}
相关文章:
代码随想录Day53|102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
102.沉没孤岛 import java.util.*;class Main{public static int[][] dir {{0,1},{1,0},{0,-1},{-1,0}};public static void main (String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int[][] grid new int[n][m];for(int i 0…...
19c-pfile
经常需要rman恢复测试,创建一个单机pfile,需要时手动修改使用,以20g内存为例 orcl.__data_transfer_cache_size0 orcl.__db_cache_size13824425984 orcl.__inmemory_ext_roarea0 orcl.__inmemory_ext_rwarea0 orcl.__java_pool_size0 orcl._…...
智能软件开启精准品牌控价
在当今竞争激烈的商业世界中,品牌的价值如同璀璨的明珠,需要精心呵护。而价格管控,则是守护这颗明珠的关键防线。 当面对众多的产品和 SKU 时,传统的人力监测已显得力不从心。此时,力维网络自主开发的数据监测系统如同…...
OpenCV特征检测(8)检测图像中圆形的函数HoughCircles()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在灰度图像中使用霍夫变换查找圆形。 该函数使用霍夫变换的一种修改版本在灰度图像中查找圆形。 例子: #include <opencv2/imgp…...
spark 大表与大表join时的Shuffle机制和过程
在 Spark 中,当处理大表与大表的 JOIN 操作时,通常会涉及到 Shuffle 机制,这是分布式计算中用于重新分布数据的关键步骤。Shuffle 的本质是将数据按照某种方式重新分组,使得相同 key 的数据能够被发送到同一个计算节点进行后续的操…...
大厂面试真题:简单说下Redis的bigkey
什么是bigkey bigkey是指key对应的value所占的内存空间比较大,例如一个字符串类型的value可以最大存到512MB,一个列表类型的value最多可以存储23-1个元素。 如果按照数据结构来细分的话,一般分为字符串类型bigkey和非字符串类型bigkey。 字…...
18 vue3之自动引入ref插件深入使用v-model
自动引入插件后无需再引入ref等 使用自动引入插入无需在import { ref, reactive } from "vue"做这样的操作 npm i unplugin-auto-import - D vite配置 import AutoImport from unplugin-auto-import/vite //使用vite版本 export default defineConfig({plugins: [v…...
【Spring】lombok、dbUtil插件应用
一、lombok插件 1. 功能:对实体类自动,动态生成get、set方法,无参、有参构造..... 2. 步骤: (1)idea安装插件(只做一次) (2)添加坐标 (3)编写注解 NoArgsCo…...
【学习笔记】WSL
WSL 1、 介绍 1.1、概述 1.2、版本 1.3、配置安装 2、 基本 2.1、基本命令 1、 介绍 1.1、概述 WSL 是 Windows Subsystem for Linux 的缩写,中文称为 Windows 下的 Linux 子系统。它是微软在 Windows 上提供的一种功能,允许用户在 …...
python assert 断言用法
语法: try:assert 条件表达式, "可选的错误消息" except AssertionError as error:print(f"断言失败:{error}")其中, try...except是异常处理语法结构,try可以测试代码块中的错误,并在出现异常时…...
MySQL事务、索引、数据恢复和备份
MySQL事务、索引、数据恢复和备份 1.MySQL的事务处理 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL的事务实现方法 : SET AUTOCOMMIT 使用SET语句来改变自动提交模式 SET AUTOCOMMIT 0; # 关…...
什么是chatgpt?国内有哪些类gpt模型?
什么是ChatGPT? “ChatGPT”这个名字越来越多地出现在我们的生活中。简单来说,ChatGPT是OpenAI开发的一种人工智能对话模型。它基于GPT(Generative Pre-trained Transformer,生成式预训练变换模型)架构,能…...
ISP基本框架及算法介绍 ISP(Image Signal Processor)
ISP基本框架及算法介绍 ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件…...
Stable Diffusion 的 ControlNet 主要用途
SD(Stable Diffusion)中的ControlNet是一种条件生成对抗神经网络(Conditional Generative Adversarial Network, CGAN)的扩展技术,它允许用户通过额外的输入条件来控制预训练的大模型(如Stable Diffusion&a…...
矩阵分析 学习笔记4 内积与Gram矩阵
内积 定义 由于对称,第二变元线性那第一变元也线性了。例如这个:...
iOS 消息机制详解
应用 解决NSTimer、CADisplayLink循环引用。 二者都是基于runloop的定时器,由于处理事件内容不一样,runloop 每运行一次运行耗时就不一样,无法准确的定时触发timer的事件。 NSProxy 与 NSObject 如果继承自NSProxy 直接开始消息转发&…...
深入理解Spring Data JPA与接口编程
目录 1. 什么是Spring Data JPA? 2. 如何使用Spring Data JPA? 3. 示例代码 4. 使用Query注解 5. 拓展知识:接口编程的好处 6. 结论 在软件开发领域,接口(Interface)是一种定义了方法签名但没有实现的…...
Wireshark学习使用记录
wireshark 是一个非常好用的抓包工具,使用 wireshark 工具抓包分析,是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境,另外一种就是应用比较多的互联网环境,也就是连接…...
OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在二值图像中使用标准 Hough 变换查找直线。 该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages…...
力扣 中等 445.两数相加 II
文章目录 题目介绍题解 题目介绍 题解 首先反转两个链表,再调用 2. 两数相加 链接的代码,得到链表,最后将其翻转即可。 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {l1 reverseList(l1);l2 reverseList(l…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
