463. Island Perimeter - LeetCode

Question

463. Island Perimeter

Solution

题目大意:给出一个二维数组1表示陆地0表示海,求陆地的周长

思路:

重新构造一张地图grid2即一个二维数组,比原数组大一圈,即长宽都大2
一个点在原地图坐标是(i,j),那么在重新构造的坐标就是(i+1,j+1)
遍历原地图,如果一是陆地,就遍历这个点的周围是否是海,如果是海线周长就加1

Java实现:

public int islandPerimeter(int[][] grid) {
    int total = 0;
    int[][] grid2 = new int[grid.length+2][grid[0].length+2];
    for (int i=0; i<grid.length; i++) {
        for (int j=0; j<grid[0].length; j++) {
            if (grid[i][j] == 1) {
                grid2[i+1][j+1] = 1;
            }
        }
    }

    for (int i=0; i<grid.length; i++) {
        for (int j=0; j<grid[i].length; j++) {
            int x = i+1;
            int y = j+1;
            if (grid2[x][y] == 0) continue;
            // left
            total += grid2[x-1][y]==1?0:1;
            // right
            total += grid2[x+1][y]==1?0:1;
            // top
            total += grid2[x][y-1]==1?0:1;
            // bottom
            total += grid2[x][y+1]==1?0:1;
        }
    }
    return total;
}

原文地址:https://www.cnblogs.com/okokabcd/p/9251638.html

时间: 2024-08-06 20:01:49

463. Island Perimeter - LeetCode的相关文章

Leetcode 463. Island Perimeter JAVA语言

You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one isla

LeetCode: 463 Island Perimeter(easy)

题目: You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one

[LeetCode] 463. Island Perimeter 岛的周长

You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one isla

LeetCode 463 Island Perimeter 解题报告

题目要求 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one

463 Island Perimeter

You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one isla

Island Perimeter Leetcode

You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one isla

463. Island Perimeter (5月29日)

解答 class Solution { public: int islandPerimeter(vector<vector<int>>& grid) { int num=0,edge=0; for(int i=0;i<grid.size();++i){ for(int j=0;j<(*grid.begin()).size();++j){ if(grid[i][j]==1){ ++num; if(i+1!=grid.size()&&grid[i+1

Leetcode-463 Island Perimeter

#463. Island Perimeter You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and th

leetcode 463. 岛屿的周长(Island Perimeter)

目录 题目描述: 示例 : 解法: 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相连(对角线方向不相连).整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿). 岛屿中没有"湖"("湖" 指水域在岛屿内部且不和岛屿周围的水相连).格子是边长为 1 的正方形.网格为长方形,且宽度和高度均不超过 100 .计算这个岛屿的周长. 示例 : 输入: [[0,1,0