For each land cell, add and subtract for each adjacent land neighbor.
Here's the solution:
function islandPerimeter(grid):
m = rows, n = cols
perimeter = 0
for r in range(m):
for c in range(n):
if grid[r][c] == 1:
perimeter += 4
if r > 0 and grid[r-1][c] == 1:
perimeter -= 1
if r < m-1 and grid[r+1][c] == 1:
perimeter -= 1
if c > 0 and grid[r][c-1] == 1:
perimeter -= 1
if c < n-1 and grid[r][c+1] == 1:
perimeter -= 1
return perimeter
time, space.