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

463. Island Perimeter(岛屿的周长)

问题描述

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

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

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

问题分析

根据题目描述,我们可以这样想,每增加一个如果方格不与已经存在的方格相邻,则边长要增加4,如果相邻且与x个方格相邻则增加4-2*x个边长,由此,我们可以先算一下不考虑相邻情况的总边长,然后减去相邻的部分。

代码

int islandPerimeter(int** grid, int gridSize, int* gridColSize) {int count = 0;for(int i=0; i<gridSize; i++){for(int j = 0; j<* gridColSize; j++){if(grid[i][j] == 1){count += 4;}}}for(int i=0; i<gridSize; i++){for(int j = 0; j<* gridColSize; j++){if(i+1<gridSize){if(grid[i][j]==1&&grid[i+1][j]==1){count-=2;}}if(j+1<* gridColSize){if(grid[i][j]==1&&grid[i][j+1]==1){count-=2;}}}}return count;
}

提交结果截图

在这里插入图片描述

http://www.lryc.cn/news/300998.html

相关文章:

  • 如何解决缓存和数据库的数据不一致问题
  • linux系统下vscode portable版本的python环境搭建003:venv
  • 使用TinyXML-2解析XML文件
  • Linux:docker在线仓库(docker hub 阿里云)基础操作
  • C语言程序设计(第四版)—习题7程序设计题
  • ZCC6982-同步升压充双节锂电池充电芯片
  • 定时器(基本定时器、通用定时器、高级定时器)
  • 009集——磁盘详解——电脑数据如何存储在磁盘
  • 鸿蒙开发-HarmonyOS UI架构
  • Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)
  • 用HTML5 Canvas创造视觉盛宴——动态彩色线条效果
  • 云原生介绍与容器的基本概念
  • Flash存储
  • Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ
  • 使用PaddleNLP UIE模型提取上市公司PDF公告关键信息
  • 软件工程师,OpenAI Sora驾到,快来围观
  • 【Linux 04】编辑器 vim 详细介绍
  • KMP算法详解
  • ubuntu22.04@laptop OpenCV Get Started: 013_contour_detection
  • [ai笔记5] 个人AI资讯助手实战
  • QT+OSG/osgEarth编译之八十九:osgdb_ply+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ply)
  • 机器人专题:我国机器人产业园区发展现状、问题、经验及建议
  • 算法沉淀——哈希算法(leetcode真题剖析)
  • 深入理解Redis哨兵原理
  • MySQL-存储过程(PROCEDURE)
  • linux系统监控工具prometheus的安装以及监控mysql
  • 初识tensorflow程序设计模式
  • 【QT+QGIS跨平台编译】之三十八:【GDAL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 黑马鸿蒙教程学习1:Helloworld
  • 蓝桥杯每日一题------背包问题(四)