LintCode 1225. 岛的周长 JavaScript算法

tech2023-08-12  100

描述

给定一张用二维数组表示的网格地图,其中1表示陆地单元格,0表示水域单元格。网格地图中的单元格视为水平/垂直相连(斜向不相连)。这个网格地图四周完全被水域包围着,并且其中有且仅有一个岛(定义为一块或多块相连的陆地单元格)。这个岛不包含湖(定义为不和外围水域相连的水域单元格)。一个地图单元格是边长为1的一个正方形;网格地图是一个矩形,并且它的长和宽不超过100。你要做的是求出这个岛的周长。

样例

[[0,1,0,0], [1,1,1,0], [0,1,0,0], [1,1,0,0]] 答案:16 说明:岛的边界为下图中被标为黄色的边,其周长即为16

解析

islandPerimeter = function (grid) { var dx = [1, 0, -1, 0]; var dy = [0, 1, 0, -1]; function valid(x,y,grid) { if (0 <= x && x < grid.length && 0 <= y && y < grid[x].length) { return grid[x][y] === 0; } return true; } Perimeter = 0; for(i = 0; i < grid.length; i ++) { for(j = 0; j < grid[i].length;j ++) { if(grid[i][j] == 1) { for (k = 0; k < 4; k++) { if (valid(i + dx[k], j + dy[k], grid)) { Perimeter ++; } } } } } return Perimeter; };

运行结果

最新回复(0)