All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0401_0500.s0463_island_perimeter.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0401_0500.s0463_island_perimeter;

// #Easy #Array #Depth_First_Search #Breadth_First_Search #Matrix
// #2022_07_19_Time_9_ms_(81.80%)_Space_62.9_MB_(23.26%)

/**
 * 463 - Island Perimeter\.
 *
 * Easy
 *
 * You are given `row x col` `grid` representing a map where `grid[i][j] = 1` represents land and `grid[i][j] = 0` represents water.
 *
 * Grid cells are connected **horizontally/vertically** (not diagonally). The `grid` is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells).
 *
 * The island doesn't have "lakes", meaning the water inside isn't connected to the water around the island. One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.
 *
 * **Example 1:**
 *
 * ![](https://assets.leetcode.com/uploads/2018/10/12/island.png)
 *
 * **Input:** grid = \[\[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
 *
 * **Output:** 16
 *
 * **Explanation:** The perimeter is the 16 yellow stripes in the image above.
 *
 * **Example 2:**
 *
 * **Input:** grid = \[\[1]]
 *
 * **Output:** 4
 *
 * **Example 3:**
 *
 * **Input:** grid = \[\[1,0]]
 *
 * **Output:** 4
 *
 * **Constraints:**
 *
 * *   `row == grid.length`
 * *   `col == grid[i].length`
 * *   `1 <= row, col <= 100`
 * *   `grid[i][j]` is `0` or `1`.
 * *   There is exactly one island in `grid`.
**/
public class Solution {
    public int islandPerimeter(int[][] grid) {
        int islands = 0;
        int neighbours = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                if (grid[i][j] == 1) {
                    islands++;
                    if (i < grid.length - 1 && grid[i + 1][j] == 1) {
                        neighbours++;
                    }
                    if (j < grid[i].length - 1 && grid[i][j + 1] == 1) {
                        neighbours++;
                    }
                }
            }
        }
        return 4 * islands - 2 * neighbours;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy