跳到主要内容

463.岛屿的周长

链接:463.岛屿的周长
难度:Easy
标签:深度优先搜索、广度优先搜索、数组、矩阵
简介:给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地  0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。

题解 1 - typescript

  • 编辑时间:2020-10-30
  • 执行用时:196ms
  • 内存消耗:47.7MB
  • 编程语言:typescript
  • 解法介绍:循环遍历每一个 1 进行计数。
function islandPerimeter(grid: number[][]): number {
const rowLen = grid.length;
const colLen = grid[0].length;
let ans = 0;
for (let i = 0; i < rowLen; i++) {
for (let j = 0; j < colLen; j++) {
if (grid[i][j] === 1) {
ans += count(i, j);
}
}
}
return ans;
function count(row: number, col: number): number {
let ans = 0;
if (row === 0 || grid[row - 1][col] !== 1) ans++;
if (col === 0 || grid[row][col - 1] !== 1) ans++;
if (row === rowLen - 1 || grid[row + 1][col] !== 1) ans++;
if (col === colLen - 1 || grid[row][col + 1] !== 1) ans++;
return ans;
}
}