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

图论| 827. 最大人工岛 127. 单词接龙

827. 最大人工岛

题目:给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后,grid 中最大的岛屿面积是多少?
岛屿 由一组上、下、左、右四个方向相连的 1 形成。
题目链接:[827. 最大人工岛](https://leetcode.cn/problems/making-a-large-island/)
解题思路:暴力解法 把每一个0改为1计算岛屿面积 复杂度:改每一个0为1:n2计算岛屿最大面积n2 会超时
优化思路:遍历记录所有岛屿面积 将0附近(上下左右)的岛屿进行联通
1.遍历记录所有岛屿面积
如何记录:遍历过的岛屿标记岛屿编号(从2开始) 将岛屿编号和最大面积记录在set中
2. 将0附近(上下左右)的岛屿进行联通
如何判断0周围的面积:遍历0周围的岛屿面积进行联通,将周围的岛屿加入set以防重复叠加
代码如下:

class Solution {public int[][] mark;public int[][] move={{0,1},{0,-1},{1,0},{-1,0}};public HashMap<Integer, Integer> island = new HashMap<Integer, Integer>();public int largestIsland(int[][] grid) {//遍历岛屿并记录int maxArea=0;int masknum=2;mark=new int[grid.length][grid[0].length];for(int i=0;i<grid.length;i++){for(int j=0;j<grid[0].length;j++){if(mark[i][j]==0&&grid[i][j]==1){bfs(grid,i,j,masknum);masknum++;}}}for(int value: island.values()) {if(value>maxArea){maxArea=value;}}//修改岛屿并记录面积for(int i=0;i<grid.length;i++){for(int j=0;j<grid[0].length;j++){if(grid[i][j]==0){HashSet<Integer> sites = new HashSet<>();for(int p=0;p<4;p++){int nextx=i+move[p][0];int nexty=j+move[p][1];if(nextx<0||nextx>=grid.length||nexty<0||nexty>=grid.length){continue;}if(mark[nextx][nexty]!=0){sites.add(mark[nextx][nexty]);}}//计算面积int area=1;for(int p:sites){area+=island.get(p);}if(area>maxArea){maxArea=area;}}}}return maxArea;}public void bfs(int[][] grid,int i,int j,int masknum){int area=1;Queue<int[]> queue=new LinkedList<>();queue.offer(new int[]{i,j});mark[i][j]=masknum;while(!queue.isEmpty()){int[] node=queue.poll();for(int p=0;p<4;p++){int nextx=node[0]+move[p][0];int nexty=node[1]+move[p][1];if(nextx<0||nextx>=grid.length||nexty<0||nexty>=grid.length){continue;}if(mark[nextx][nexty]==0&&grid[nextx][nexty]==1){queue.offer(new int[]{nextx,nexty});mark[nextx][nexty]=masknum;area++;}}}island.put(masknum,area);}
}

217 单词接龙

题目:字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk:
每一对相邻的单词只差一个字母。
对于 1 <= i <= k 时,每个 si 都在 wordList 中。注意, beginWord 不需要在 wordList 中。
sk == endWord
给你两个单词 beginWord 和 endWord 和一个字典 wordList ,返回 从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列,返回 0 。
题目链接:217 单词接龙
在这里插入图片描述

解题思路:
为了保证从 beginWord 到 endWord 的转换序列是最短路径,我们使用广度优先搜索(BFS)算法。BFS 有一个重要特性:它首先访问距离源点(在这个场景中是 beginWord)最近的节点。因此,当我们首次到达 endWord 时,我们可以确信找到的路径是最短的。
我们使用队列进行广度优先搜索 每次从队列中取出一个单词,查找与其相差一个字母的所有单词,并将这些单词加入队列 为了防止重复处理相同的单词,我们需要从 wordList 中移除已经处理过的单词。具体是将其与对应路径长度加入map中
代码如下

class Solution {public int ladderLength(String beginWord, String endWord, List<String> wordList) {if (!wordList.contains(endWord)) {return 0;}if (!wordList.contains(beginWord)) {wordList.add(beginWord);}HashSet<String> wordSet = new HashSet<>(wordList);Queue<String> queue = new LinkedList<>();queue.offer(beginWord);Map<String, Integer> visited = new HashMap<>();visited.put(beginWord, 1);while (!queue.isEmpty()) {String currentWord = queue.poll();int currentLength = visited.get(currentWord);for (String word : wordSet) {if (isOneLetterDiff(currentWord, word)) {if (word.equals(endWord)) {return currentLength + 1;}if (!visited.containsKey(word)) {queue.offer(word);visited.put(word, currentLength + 1);}}}}return 0;}private boolean isOneLetterDiff(String word1, String word2) {if (word1.length() != word2.length()) {return false;}int diffCount = 0;for (int i = 0; i < word1.length(); i++) {if (word1.charAt(i) != word2.charAt(i)) {diffCount++;if (diffCount > 1) {return false;}}}return diffCount == 1;}
}

相关文章:

图论| 827. 最大人工岛 127. 单词接龙

827. 最大人工岛 题目&#xff1a;给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后&#xff0c;grid 中最大的岛屿面积是多少&#xff1f; 岛屿 由一组上、下、左、右四个方向相连的 1 形成。 题目链接&#xff1a;[827. 最大人工岛](ht…...

2023年中国恒温蜡疗仪发展趋势分析:应用前景存有很大发展与探索空间[图]

恒温电蜡疗仪可将蜡熔化&#xff0c;利用蜡自身特点&#xff0c;能阻止热的传导、散热慢、气体和水分不易消失&#xff0c;保温性能优越。利用蜡能紧密贴于体表的可塑性&#xff0c;可加入其他药物协同进行治疗&#xff0c;也可将中药与蜡疗有机地结合在一起&#xff0c;产生柔…...

认识“协议”

文章目录&#xff1a; 什么是协议结构化的数据传输序列化和反序列化网络版本计算器 什么是协议 在计算机网络中&#xff0c;协议是指在网络中进行通信和数据交换时&#xff0c;双方遵循的规则和约定集合。它定义了数据的传输格式、顺序、错误处理、认证和安全性等方面的规范。 …...

GO语言的由来与发展历程

Go语言&#xff0c;也称为Golang&#xff0c;是由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明&#xff0c;并于2009年正式对外发布的开源编程语言。 三名初始人的目标是设计一种适应网络和多核时代的C语言&#xff0c;Go语言从C继承了…...

MPN – 制造零件号

S/4 1610 中的 MPN – 基于 NAST 的输出管理 我试图查找有关 MPN 设置的信息&#xff0c;但找不到详细的配置步骤。在浏览了一些信息和 help.sap 链接后&#xff0c;我能够在 S/4 1610 系统中配置 MPN 设置&#xff0c;这与使用旧输出类型&#xff08;Nast 和输出类型 NEU&…...

Redis企业级问题及解决方案

1.1 缓存预热 场景&#xff1a;“宕机” 服务器启动后迅速宕机 问题排查&#xff1a; 1.请求数量较高&#xff0c;大量的请求过来之后都需要去从缓存中获取数据&#xff0c;但是缓存中又没有&#xff0c;此时从数据库中查找数据然后将数据再存入缓存&#xff0c;造成了短期…...

【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC

团队介绍 参赛单位&#xff1a;深圳大学 队伍名称&#xff1a;光之巨人队 指导老师&#xff1a;钟世达、袁涛 参赛队员&#xff1a;冯昊港、潘家豪、慕镐泽 图1 团队风采 1. 项目简介 新冠疫情席卷全球&#xff0c;有效佩戴口罩可以极大程度地减小病毒感染的风险。本项目开发…...

B码的相关知识点笔记

B码&#xff08;B-Code&#xff09;通常是指中国北斗卫星导航系统的坐标编码方式。北斗卫星导航系统使用的坐标系是WGS-84&#xff0c;而B码是针对WGS-84坐标系进行编码的一种方式。 B码的格式通常为18位或24位&#xff0c;其中包含以下信息&#xff1a; 前两位为国家码&…...

java“贪吃蛇”小游戏

基于java实现贪吃蛇小游戏&#xff0c;主要通过绘制不同的图片并以一定速度一帧一帧地在窗体上进行展示。 我是在javaSwing项目下创建了一个包 名字叫做&#xff1a;Snakes包 包下有一个启动类和一个设置代码的主界面两个类 代码主界面&#xff1a; 代码主界面主要讲解的是 …...

【面试经典150 | 位运算】数字范围按位与

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;公共前缀方法二&#xff1a;n & (n-1) 写在最后 Tag 【位运算】 题目来源 201. 数字范围按位与 题目解读 计算给定区间内所有整数的按位与的结果。 解题思路 本题朴素的方法是直接将区间内的所有整数按位与&…...

推介会如何做好媒体宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 推介会是一种专为企业、社会组织和团体、政府等提供的展示自身特点、产品和政策的活动形式&#xff0c;旨在促进交流活动&#xff0c;形成合作&#xff0c;从而带来共同利益。推介会的本…...

【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机

致谢&#xff1a;ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 一、地图 nav_msgs/MapMetaData 地图元数据&#xff0c;包括地图的宽度、高度、分辨率等。 nav_msgs/OccupancyGrid 地图栅格数据&#…...

什么是脏读、不可重复读、幻读讲解

数据库隔离级别是数据库管理系统中一个重要的概念&#xff0c;它定义了事务之间的可见性和影响。在多用户并发访问数据库时&#xff0c;隔离级别能够确保事务之间的相互独立性&#xff0c;避免数据不一致的问题。本文将深入探讨三种常见的并发问题&#xff1a;脏读、不可重复读…...

2018年五一杯数学建模C题江苏省本科教育质量综合评价解题全过程文档及程序

2019年五一杯数学建模 C题 江苏省本科教育质量综合评价 原题再现 随着中国的改革开放&#xff0c;国家的综合实力不断增强&#xff0c;中国高等教育发展整体已进入世界中上水平。作为一个教育大省&#xff0c;江苏省的本科教育发展在全国名列前茅&#xff0c;而江苏省13个地级…...

第四代智能井盖传感器:万宾科技助力城市安全

在繁华喧嚣的城市里人来人往&#xff0c;井盖作为基础设施的一个组成部分在路面上分布范围广。然而这些看似普通的井盖却存在着位移、水浸的风险&#xff0c;可能给我们的生活带来诸多不便&#xff0c;更会威胁到我们的人身安全。如何有效监测和管理井盖的状态&#xff0c;成为…...

[Jenkins] Docker 安装Jenkins及迁移流程

系统要求 最低推荐配置: 256MB可用内存1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB可用内存50 GB 可用磁盘空间 软件配置: Java 8—无论是Java运行时环境&#xff08;JRE&#xff09;还是Java开发工具包&#xff08;JDK&#xff…...

第七篇 基于JSP 技术的网上购书系统——新品上架、推荐产品、在线留言、搜索功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.新品上架 1.1功能说明 1.2界面设计 1.3处理流程 1.4数据来源和算法 1.4.1数据来源 1.4.2查询条件 1.4.3表间关系 1.4.4相关sql实例 2.推荐产品 2.1功能说明 2.2界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2查询条件 2.4.3表间关…...

IntelliJ IDE 插件开发 |(一)快速入门

前言 IntelliJ IDEA 作为 Java 开发的首选 IDE&#xff0c;其强大、方便之处不必多说。不过&#xff0c;由于个人或者团队的个性化需求&#xff0c;我们或多或少会想对其功能进行拓展&#xff0c;这时就需要开发插件&#xff08;在 IntelliJ 平台下的所有 IDE 均可运行&#x…...

【Ubuntu】Windows远程Ubuntu系统

步骤 开启ssh服务并开放22端口关闭防火墙ufw或iptables &#xff1b;或者将远程端口添加到入站与出站规则安装xrdp并将xrdp用户添加到ssl-cert用户组mstsc 远程&#xff0c;输入账号密码 1、开启ssh服务 1.1. 查看ssh是否已经开启 sudo ps -e | grep ssh如果最后返回是sshd…...

pipeline jenkins流水线

Pipeline 是 Jenkins 中一种灵活且强大的工作流机制&#xff0c;它允许您以代码的形式来定义和管理持续集成和持续交付的流程。 Pipeline 的作用主要体现在以下几个方面&#xff1a; 可编排的构建流程&#xff1a;使用 Pipeline&#xff0c;您可以将一个或多个阶段&#xff08…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...