Island Perimeter Visualizer & Step-by-Step Algorithm Solution

Scan a grid, add four sides for each land cell, and subtract two for each shared edge above or to the left.

Category: arrays | Difficulty: Easy

Tags: Array, Matrix, Counting

Island Perimeter

Island grid · 1 = land · 0 = water
0
1
2
3
0
1
2
3
0
1
0
0
1
1
1
0
0
1
0
0
1
1
0
0
Active Cell
Active Row / Col / Box
Conflict / Subtracted
Highlighted / Subgrid
100%
state
m4
n4
perimeter0
Grid Height
1/66
Explanation

Set m = grid.length = 4. Scan the grid in row order; 1 means land and 0 means water.

Source Code
1function islandPerimeter(grid: number[][]): number {
2 const m = grid.length;
3 const n = grid[0].length;
4 let perimeter = 0;
5 for (let r = 0; r < m; r++) {
6 for (let c = 0; c < n; c++) {
7 if (grid[r][c] === 1) {
8 perimeter += 4;
9 if (r > 0 && grid[r - 1][c] === 1) perimeter -= 2;
10 if (c > 0 && grid[r][c - 1] === 1) perimeter -= 2;
11 }
12 }
13 }
14 return perimeter;
15}