Go语言题解LeetCode463岛屿的周长示例详解
作者:刘09k11 发布时间:2024-04-25 15:09:59
标签:Go,LeetCode,岛屿周长
题目描述
原题链接 :
463. 岛屿的周长 - 力扣(LeetCode)
给定一个 row x col
的二维网格地图 grid
,其中:grid[i][j] = 1
表示陆地, grid[i][j] = 0
表示水域。
网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。
岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。
示例 1:
输入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
输出:16
解释:它的周长是上面图片中的 16 个黄色的边
示例 2:
输入:grid = [[1]]
输出:4
示例 3:
输入:grid = [[1,0]]
输出:4
提示:
row == grid.length
col == grid[i].length
1 <= row, col <= 100
grid[i][j] 为 0 或 1
思路分析
本题中,我们可以针对每一个值为1的单元格,它的上下左右每有一个值为0的单元格则岛屿的周长加一。
我们可以简化计算,即针对每一个值为1的单元格,算出5分别减去每一个值为1的单元格和其上下左右单元格的值(因为如果该单元格为内陆,则其和其上下左右单元格的值的和为5)。
该题的难度在于边界的判定,我们为求边界判定简化,可以在二维数组grid数组周围加上一圈值为0的围墙,然后从[1,1]找到[hight+1][weight+1]。
AC 代码
public class Solution {
public int IslandPerimeter(int[][] grid) {
int w = grid[0].Length;
int h = grid.Length;
int c = 0;
int[][] g = new int[h + 2][];
for (int i = 0; i < h + 2; i++)
{
g[i] = new int[w+2];
for (int j = 0; j <w + 2; j++)
{
if (i == 0 || j == 0 || i == h + 1 || j == w + 1)
g[i][j] = 0;
else
g[i][j] = grid[i - 1][j - 1];
}
}
for (int i = 1; i < h + 1; i++)
{
for (int j = 1; j <w + 1; j++)
{
if (g[i][j] == 1)
c += 5 - g[i][j] - g[i - 1][j] - g[i + 1][j] - g[i][j - 1] - g[i][j + 1];
}
}
return c;
}
}
来源:https://juejin.cn/post/7175771246762655800
0
投稿
猜你喜欢
- 装tensorflow-gpu的时候经常遇到问题,自己装过几次,经常遇到相同或者类似的问题,所以打算记录一下,也希望对其他人有所帮助基本信息
- 0.摘要我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变。本文将主要介绍这种错误的现象、原因和解决方法。1.代码示例de
- 一、什么是pywinautoPywinauto是基于Python开发的,用于操作Windows标准图形界面的自动化测试的脚本模块。二、pyw
- phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许
- 一、报错error connecting to master 'x@x.x.x.x:x' - retry-time: 60&
- 使用字符串建立查询能加快服务器的解析速度吗?我记的在那儿看过,好像是说使用字符串建立SQL查询是有它的道理的,像这样:<%mySQL=
- Django中上传文件方式。如何实现文件上传功能?1创建项目uploadfile:创建app:front项目设置INSTALLED_APPS
- 前言这篇主要整理pandas常用的基本函数,主要分为五部分:汇总函数特征统计函数唯一值函数替换函数排序函数1、汇总函数常用的主要是4个:ta
- 场景可能是你用不到,但是我遇到了这样一个问题,就是我想详细了解我的竞争对手的网站(电商类)销售情况和新品上架情况,但是我总不至于像盯盘一样,
- 数据库迁移(A -> B),需要把用户也迁移过去,而用户表(mysql.user)有上百个用户。有2种方法进行快速迁移:1,在同版本的
- 查询mysql的操作信息show status -- 显示全部mysql操作信息show status like "com_ins
- 导语"盘子里最后一块肉给你 一 冰激凌的第一口给你 一手机最后的10%电量给你!"哈喽大家好!我是木木子,我要开始给大家
- 我们有时请求服务器时,无论get或post请求,会出现403错误,这是因为服务器拒绝了你的访问,这时我们可以通过模拟浏览器的头部信息进行访问
- int 数字类型class int(object): """ int(x=0) -&g
- 请问论坛的树状记录表是怎么展开的?如何做?论坛的这种展开技术一般采用两种方法实现,一种是采用递归的方法,优点是逻辑简单,编程简单,缺点是速度
- 模块导入1.1 import导入模块所谓的模块其实就是一个外部的工具包,其中存在的其实就是Python文件,这些文件都实现了某种特定的功能,
- 在django项目根目录位置创建scrapy项目,django_12是django项目,ABCkg是scrapy爬虫项目,app1是djan
- etcd组件作为一个高可用强一致性的服务发现存储仓库.etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似
- 这是一个获取字符串中两个子串之间的子串,如从字符串www.aspxhome.com中获取coderbolg子串,就让这个PHP函数来实现吧,
- 下策——查询出结果后将时间排序后取第一条select * from a where create_time<="2017-0