463 Island Perimeter
最优解就是暴力解.
Approach 1: Brute Force
Note
- Time Complexity: O(m*n)
- Space Complexity: O(1)
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
"""
observation:
- determine adjacent nodes to see
- out of bounds: +1
- sea: + 1
- else: + 0
"""
m,n = len(grid),len(grid[0])
res = 0
for i in range(m):
for j in range(n):
# adjacent nodes, (i-1,j), (i+1,j),(i,j-1),(i,j+1)
# left
if grid[i][j] == 0:
continue
curr = 0
if j-1 < 0 or (j-1 >= 0 and grid[i][j-1] == 0):
curr += 1
# right
if j+1 >= n or (j+1 < n and grid[i][j+1] == 0):
curr += 1
# top
if i-1 < 0 or (i-1 >= 0 and grid[i-1][j] == 0):
curr += 1
# bottom
if i + 1 >= m or (i+1 < m and grid[i+1][j] == 0):
curr += 1
res += curr
return res