Skip to content

Commit b4ddd69

Browse files
authored
feat: add typescript solution to lc problem: No.0695.Max Area of Island (doocs#460)
1 parent 964988d commit b4ddd69

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

solution/0600-0699/0695.Max Area of Island/README.md

+34
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,40 @@
6161

6262
```
6363

64+
### **TypeScript**
65+
66+
```ts
67+
function maxAreaOfIsland(grid: number[][]): number {
68+
let m = grid.length, n = grid[0].length;
69+
let visited = Array.from({ length: m }, v => new Array(n).fill(false));
70+
let res = 0;
71+
for (let i = 0; i < m; ++i) {
72+
for (let j = 0; j < n; ++j) {
73+
if (!visited[i][j]) {
74+
res = Math.max(dfs(grid, i, j, visited), res);
75+
}
76+
}
77+
}
78+
return res;
79+
};
80+
81+
function dfs(grid: number[][], i: number, j: number, visited: boolean[][]): number {
82+
let m = grid.length, n = grid[0].length;
83+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || visited[i][j]) {
84+
return 0;
85+
}
86+
visited[i][j] = true;
87+
if (grid[i][j] == 0) {
88+
return 0;
89+
}
90+
let res = 1;
91+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
92+
res += dfs(grid, i + dx, j + dy, visited);
93+
}
94+
return res;
95+
}
96+
```
97+
6498
### **...**
6599

66100
```

solution/0600-0699/0695.Max Area of Island/README_EN.md

+34
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,40 @@ Given the above grid, return <code>0</code>.
7272

7373
```
7474

75+
### **TypeScript**
76+
77+
```ts
78+
function maxAreaOfIsland(grid: number[][]): number {
79+
let m = grid.length, n = grid[0].length;
80+
let visited = Array.from({ length: m }, v => new Array(n).fill(false));
81+
let res = 0;
82+
for (let i = 0; i < m; ++i) {
83+
for (let j = 0; j < n; ++j) {
84+
if (!visited[i][j]) {
85+
res = Math.max(dfs(grid, i, j, visited), res);
86+
}
87+
}
88+
}
89+
return res;
90+
};
91+
92+
function dfs(grid: number[][], i: number, j: number, visited: boolean[][]): number {
93+
let m = grid.length, n = grid[0].length;
94+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || visited[i][j]) {
95+
return 0;
96+
}
97+
visited[i][j] = true;
98+
if (grid[i][j] == 0) {
99+
return 0;
100+
}
101+
let res = 1;
102+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
103+
res += dfs(grid, i + dx, j + dy, visited);
104+
}
105+
return res;
106+
}
107+
```
108+
75109
### **...**
76110

77111
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function maxAreaOfIsland(grid: number[][]): number {
2+
let m = grid.length, n = grid[0].length;
3+
let visited = Array.from({ length: m }, v => new Array(n).fill(false));
4+
let res = 0;
5+
for (let i = 0; i < m; ++i) {
6+
for (let j = 0; j < n; ++j) {
7+
if (!visited[i][j]) {
8+
res = Math.max(dfs(grid, i, j, visited), res);
9+
}
10+
}
11+
}
12+
return res;
13+
};
14+
15+
function dfs(grid: number[][], i: number, j: number, visited: boolean[][]): number {
16+
let m = grid.length, n = grid[0].length;
17+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || visited[i][j]) {
18+
return 0;
19+
}
20+
visited[i][j] = true;
21+
if (grid[i][j] == 0) {
22+
return 0;
23+
}
24+
let res = 1;
25+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
26+
res += dfs(grid, i + dx, j + dy, visited);
27+
}
28+
return res;
29+
}

0 commit comments

Comments
 (0)