【leetcode】463. 岛屿的周长(island-perimeter)(模拟)[简单]
发布日期:2021-05-13 21:40:09 浏览次数:20 分类:原创文章

本文共 1100 字,大约阅读时间需要 3 分钟。

链接

耗时

解题:19 min
题解:3 min

题意

给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。

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

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

思路

详见代码。

时间复杂度: O ( n ∗ m ) O(n*m) O(nm)

AC代码

class Solution {   private:    int dir[4][2] = {   {   -1, 0}, {   1, 0}, {   0, -1}, {   0, 1}};    int ans = 0;public:    int islandPerimeter(vector<vector<int>>& grid) {           int n = grid.size();        if(n == 0) return 0;        int m = grid[0].size();        for(int i = 0; i < n; ++i) {               for(int j = 0; j < m; ++j) {                   if(grid[i][j] == 1) {                       int cnt = 0;                    for(int d = 0; d < 4; ++d) {                           int x = i + dir[d][0];                        int y = j + dir[d][1];                        if((x >= 0 && x < n) && (y >= 0 && y < m)) {                               if(grid[x][y] == 1) cnt++;                        }                    }                    ans += (4-cnt);                }            }        }        return ans;    }};
上一篇:【leetcode】140. 单词拆分 II(word-break-ii)(DP)[困难]
下一篇:【leetcode】845. 数组中的最长山脉(longest-mountain-in-array)(模拟)[中等]

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月18日 08时47分32秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

CMake的主体框架 2021-05-14
实践:从简单CMake说起 2021-05-14
像素间的关系 2021-05-14
微积分(三) 2021-05-14
Oracle 2021-05-14
软件工程应用 2021-05-14
数据科学 2021-05-14
论文报告/前沿文章 2021-05-14
Less 2021-05-14
JS模块化规范 2021-05-14
函数与高级变量 2021-05-14
机器学习:sklearn实现黑色星期五 2021-05-14
键盘事件 2021-05-14
超分辨率/去噪 2021-05-14
弱监督 2021-05-14
二 召回算法 2021-05-14
2020-11月计划实施表 2021-05-14
个人常用网络 2021-05-14
图神经网络 2021-05-14
数据分析 2021-05-14