463. 岛屿的周长

给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。

网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/island-perimeter
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法一
官方答案,遍历每个方格,判断方格的四条边是否是边界或者与水域接触

class Solution {static int[] dx = {0,0,-1,1};static int[] dy = {1,-1,0,0};public int islandPerimeter(int[][] grid) {int res = 0;int n = grid.length;int m = grid[0].length;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if(grid[i][j]==1){int cnt = 0;/*这个for语句是判断每个方格的四条边设计的,k值不同,代表的边不同*/for(int k = 0;k<4;k++){int tx = i + dx[k];int ty = j + dy[k];if(tx<0||tx>=n||ty<0||ty>=m||grid[tx][ty]==0){cnt++;}}res += cnt;}}}return res;}
}
开头两个static数组和后文的
for(int k = 0;k<4;k++){int tx = i + dx[k];int ty = j + dy[k];if(tx<0||tx>=n||ty<0||ty>=m||grid[tx][ty]==0){cnt++;}设计的很妙

方法二
深度优先遍历

class Solution {static int[] dx = {0,0,-1,1};static int[] dy = {1,-1,0,0};public int islandPerimeter(int[][] grid) {int res = 0;int n = grid.length;int m = grid[0].length;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if(grid[i][j]==1){res += dfs(i,j,n,m,grid);}}}return res;}public int dfs(int x,int y,int n,int m,int[][]grid){if(x<0||x>=n||y<0||y>=m||grid[x][y]==0){return 1;}if(grid[x][y]==2){return 0;}grid[x][y]=2;int cnt = 0;cnt += dfs(x,y+1,n,m,grid);cnt += dfs(x,y-1,n,m,grid);cnt += dfs(x+1,y,n,m,grid);cnt += dfs(x-1,y,n,m,grid);return cnt;}
}

和题目岛屿的数量很像

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

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

相关文章

C++服务器设计(七):聊天系统服务端实现

在之前的章节中&#xff0c;我们对服务端系统的设计实现原理进行了剖析&#xff0c;在这一章中&#xff0c;我们将对服务端框架进行实际运用&#xff0c;实现一款运行于内网环境的聊天系统。该聊天系统由客户端与服务器两部分组成&#xff0c;同时服务端通过数据库维护用户的账…

高校实验室管理系统_史上最全面的实验室信息管理系统(LIMS)全解

1. LIMS的基本概念和发展状况1.1 概括LIMS实验室管理系统是为实验、检测等业务板块提供流程化、模块化、标准化操作管理系统&#xff0c;打造基于行业法规的实验室全流程质量控制管理系统&#xff0c;实现实验室“人、机、料、法、环”关键环节管理。1.2 发展状况随着科研规范化…

ORM问题

在过去的几年中&#xff0c;像Hibernate这样的对象关系映射工具已经帮助开发人员在处理关系数据库方面取得了巨大的生产力增长。 ORM使开发人员可以将精力集中在应用程序逻辑上&#xff0c;并避免为诸如插入或查询之类的简单任务编写大量样板SQL。 但是&#xff0c;充分证明的对…

ActiveMQ中Session设置的相关理解

名词解释&#xff1a; P&#xff1a;生产者 C&#xff1a;消费者 服务端&#xff1a;P 或者 ActiveMQ服务 客户端&#xff1a;ActiveMQ服务 或者 C 客户端成功接收一条消息的标志是这条消息被签收。成功接收一条消息一般包括如下三个阶段&#xff1a; 1&#xff0e;客户端接收…

python中的 descriptor

学好和用好python&#xff0c; descriptor是必须跨越过去的一个点&#xff0c;现在虽然Python书籍花样百出&#xff0c;但是似乎都是在介绍一些Python库而已&#xff0c;对Python语言本身的关注很少&#xff0c;或者即使关注了&#xff0c;但是能够介绍把 dscriptor介绍清楚的&…

Heroku运行Java

如果您是像我这样的Java迷&#xff0c;那么您有个好消息值得振奋。 Heroku现在运行Java&#xff01; 嗯&#xff0c;与其他流行的“ Web”语言&#xff08;如PHP / RoR&#xff09;不同&#xff0c;Java具有在Web服务器中进行部署和维护的麻烦。 一直以来&#xff0c;只有企业才…

配置了坐标还是找不到serv_为什么老人家总是这疼那疼,还找不到原因?是矫情还是另有原因...

“哎呀&#xff0c;怎么回事&#xff0c;腰痛腿痛的&#xff0c;痛的我一晚上都没怎么睡觉&#xff0c;怎么回事昨天也没干嘛啊&#xff01;”对于这一句话&#xff0c;相信很多朋友都不是很陌生。这句话是来自于一位网友的留言&#xff0c;而说这话的真是她的妈妈。这也是很多…

Nginx负载均衡和LVS负载均衡的比较分析

lvs和nginx都可以用作多机负载的方案&#xff0c;它们各有优缺&#xff0c;在生产环境中需要好好分析实际情况并加以利用。 首先提醒&#xff0c;做技术切不可人云亦云&#xff0c;我云即你云&#xff1b;同时也不可太趋向保守&#xff0c;过于相信旧有方式而等别人来帮你做垫被…

QuartZ.net 常用配置说明

配置文件说明app.config中的quartz部分<quartz><!-- configure Thread Pool--><addkey"quartz.threadPool.type"value"Quartz.Simpl.SimpleThreadPool,Quartz" /><addkey"quartz.threadPool.threadCount"value"10&quo…

qopenglwidget 透明_廊坊透明真空袋用途-祺泰包装

功能方面&#xff1a;平面真空袋抽真空后易形成不平整&#xff0c;不均匀的现象。目前&#xff0c;真空包装主要用于食品的包装&#xff0c;如肉类、谷类加工食品以及易氧化变质的食品&#xff0c;也可用于机械零件、仪器和羽绒制品、毛制品等蓬松制品的包装。在超shi中&#x…

使用Spring Data Neo4j进行领域建模

大家好&#xff0c;威利在这里。 上次我告诉您&#xff0c;我正在使用Neo4j和Spring Data Neo4j构建Skybase CMDB&#xff0c;我很高兴收到很多对此的积极反馈。 我展示了一些代码&#xff0c;但没有那么多。 在本文中&#xff0c;我将向您展示如何使用Spring Data Neo4j在Skyb…

mysql 阿里内核人员

丁奇 http://dinglin.javaeye.com/鸣嵩 曹伟-鸣嵩 (新浪微博)彭立勋 http://www.penglixun.com/皓庭 http://wqtn22.iteye.com/项仲 http://blog.csdn.net/wudongxu剑川 http://gaoyusong.com/武藏 http://ybbct.iteye.com/祁奚 http://i.mtime.com/844165/褚霸 http://blog.y…

linux基本命令学习

1. 执行文件&#xff1a; ./文件 &#xff1a;执行该文件 sh startup.sh 执行该文件 2. Vi编辑 vi命令&#xff1a; :w 保存文件但不退出 :w file 将修改另外保存到file中&#xff0c;不退出 :w! 强制保存&#xff0c;不推出 :wq 保存文件并退出 :wq! 强制保存文件&#xff0…

506. 相对名次

方法一 复制数组排序返回对应下标 class Solution {public String[] findRelativeRanks(int[] score) {int n score.length;int[] newScore Arrays.copyOf(score,n);Arrays.sort(newScore);String[] res new String[n];for(int i 0;i<n;i){int rank Arrays.binarySear…

Java压缩

在最近的项目中&#xff0c;我们不得不做一些我个人从未真正看过的事情。 压缩。 我们需要拍几个文件和图像&#xff0c;将它们压缩并提供给FTP使用&#xff0c;是的&#xff0c;总有一天&#xff0c;感觉确实回到了90年代。 除了过去的FTP之行外&#xff0c;它还是一个很好的机…

苏州面对公司发布

假设您对我们这种创业型公司和我们的发展方向感兴趣的话&#xff0c;我们希望通过以下10个问答进一步添加两方的了解。我们希望看到的是您经过深思熟虑的、对公司和自己的前途负责任的谨慎回答。而不是应付公差式的轻描淡写&#xff08;我们会依据您回答质量的高低决定是否邀请…

linux多线程_Java+Linux,深入内核源码讲解多线程之进程

之前写了两篇文章&#xff0c;都是针对Linux这个系统的&#xff0c;为什么?我为什么这么喜欢写这个系统的知识&#xff0c;可能就是为了今天的内容多线程系列&#xff0c;现在多线程不是一个面试重点 啊&#xff0c;那如果你能深入系统内核回答这个知识点&#xff0c;面试官会…

594. 最长和谐子序列

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在&#xff0c;给你一个整数数组 nums &#xff0c;请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列&#xff0c;它可以通过删除一些元素或不删除元素、…

解决git clone报错SSL certificate problem

Git新手一枚&#xff0c;今天进行git clone操作时发生如下问题&#xff1a;提示无效的链接error: SSL certificate problem: Invalid certificate chain while accessing https://githib.com/...XXXX.git fatal: HTTP request failed解决方法也很简单&#xff0c;一条命令就搞定…

使用内存映射文件获取巨大的矩阵

总览 矩阵可能真的很大&#xff0c;有时甚至比一个数组中可以容纳的更大。 您可以通过具有多个数组来扩展最大大小&#xff0c;但这会使堆大小确实很大且效率低下。 一种替代方法是在内存映射文件上使用包装器。 内存映射文件的优点是它们对堆的影响很小&#xff0c;并且可以由…