1. 题目
2. 思路
- 遍历二维数组,首先判断是否为陆地
- 如果是陆地,周长就加上4(正方形四条边),还要进一步判断当前单元格的下面和右边(因为左边、上面已经计算过了),如果下面和右边都是陆地,周长再减去2(重合部分要算2次)。
- 如果是海洋,不用做处理。
- 最后返回周长即可。
3. 代码实现
/**
* @param {number[][]} grid
* @return {number}
*/
var islandPerimeter = function(grid) {
const m = grid.length,
n = grid[0].length
let res = 0
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (grid[i][j]) {
res += 4
if (grid[i][j + 1]) {
// 判断右边是否为陆地
res -= 2
}
if (grid[i + 1] && grid[i + 1][j]) {
// 判断下面是否为陆地(最后一行不用判断下面)
res -= 2
}
}
}
}
return res
};
该文章介绍了一个JavaScript函数,用于计算二维数组(代表网格)中陆地岛屿的周长。算法通过遍历数组,判断每个单元格,当遇到陆地时,初始增加4到周长,并检查其相邻单元格,若相邻为陆地,则减少已计周长以避免重复计算。最后返回总周长。

&spm=1001.2101.3001.5002&articleId=129276606&d=1&t=3&u=8628b1f4b9df48e7a44c0e43f6cd2238)
336

被折叠的 条评论
为什么被折叠?



