Lâu k dùng graph, xài for loop, code chậm chạy
Python:
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
def find_land(grid):
lands = {}
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
lands[i, j] = grid[i][j]
return lands
def get_neighbors(grid, i, j):
n, m = len(grid), len(grid[0])
lst = [(i-1, j), (i+1, j), (i, j+1), (i, j-1)]
res = []
for a, b in lst:
if a >= 0 and a < n and b >= 0 and b < m:
res.append((a, b))
return res
lands = find_land(grid)
# print(lands)
ans = 0
for (i, j), _ in lands.items():
# print(i, j)
neighbors = get_neighbors(grid, i, j)
tmp = 4
for neighbor in neighbors:
tmp -= lands.get(neighbor, 0)
ans += tmp
# print(ans)
return ans
Last edited: