Skip to content

Commit e8b926e

Browse files
Create 0463-island-perimeter.go
Accepted submission: _https://leetcode.com/submissions/detail/870811815/_
1 parent 512a00e commit e8b926e

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

go/0463-island-perimeter.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
func islandPerimeter(grid [][]int) int {
2+
ROWS, COLS := len(grid), len(grid[0])
3+
visit := make(map[int]bool)
4+
5+
var dfs func(int, int) int
6+
dfs = func(i, j int) int {
7+
if i >= ROWS || j >= COLS || i < 0 || j < 0 || grid[i][j] == 0 {
8+
return 1
9+
} else if visit[i*COLS + j] {
10+
return 0
11+
}
12+
13+
visit[i*COLS + j] = true
14+
perim := dfs(i, j + 1)
15+
perim += dfs(i + 1, j)
16+
perim += dfs(i, j - 1)
17+
perim += dfs(i - 1, j)
18+
return perim
19+
}
20+
21+
for i := 0; i < ROWS; i++ {
22+
for j := 0; j < COLS; j++ {
23+
if grid[i][j] != 0 {
24+
return dfs(i, j)
25+
}
26+
}
27+
}
28+
return -1
29+
}

0 commit comments

Comments
 (0)