• Time:O(mn)
• Space:O(1)

## C++

``````class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int islands = 0;
int neighbors = 0;

for (int i = 0; i < grid.size(); ++i)
for (int j = 0; j < grid[0].size(); ++j)
if (grid[i][j]) {
++islands;
if (i - 1 >= 0 && grid[i - 1][j])
++neighbors;
if (j - 1 >= 0 && grid[i][j - 1])
++neighbors;
}

return islands * 4 - neighbors * 2;
}
};
``````

## JAVA

``````class Solution {
public int islandPerimeter(int[][] grid) {
int islands = 0;
int neighbors = 0;

for (int i = 0; i < grid.length; ++i)
for (int j = 0; j < grid[0].length; ++j)
if (grid[i][j] == 1) {
++islands;
if (i - 1 >= 0 && grid[i - 1][j] == 1)
++neighbors;
if (j - 1 >= 0 && grid[i][j - 1] == 1)
++neighbors;
}

return islands * 4 - neighbors * 2;
}
}
``````

## Python

``````class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
m = len(grid)
n = len(grid[0])

islands = 0
neighbors = 0

for i in range(m):
for j in range(n):
if grid[i][j] == 1:
islands += 1
if i + 1 < m and grid[i + 1][j] == 1:
neighbors += 1
if j + 1 < n and grid[i][j + 1] == 1:
neighbors += 1

return islands * 4 - neighbors * 2
``````