Skip to content

Commit 500b36d

Browse files
committed
feat: add typescript solution to lc problem: No.0778
No.0778.Swim in Rising Water
1 parent a5bcff8 commit 500b36d

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

solution/0700-0799/0778.Swim in Rising Water/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,33 @@ class Solution {
206206
}
207207
```
208208

209+
### **TypeScript**
210+
211+
```ts
212+
function swimInWater(grid: number[][]): number {
213+
const m = grid.length, n = grid[0].length;
214+
let visited = Array.from({ length: m }, () => new Array(n).fill(false));
215+
let ans = 0;
216+
let stack = [[0, 0, grid[0][0]]];
217+
const dir = [[0, 1], [0, -1], [1, 0], [-1, 0]];
218+
219+
while (stack.length) {
220+
let [i, j] = stack.shift();
221+
ans = Math.max(grid[i][j], ans);
222+
if (i == m - 1 && j == n - 1) break;
223+
for (let [dx, dy] of dir) {
224+
let x = i + dx, y = j + dy;
225+
if (x < m && x > -1 && y < n && y > -1 && !visited[x][y]) {
226+
visited[x][y] = true;
227+
stack.push([x, y, grid[x][y]]);
228+
}
229+
}
230+
stack.sort((a, b) => a[2] - b[2]);
231+
}
232+
return ans;
233+
};
234+
```
235+
209236
### **C++**
210237

211238
```cpp

solution/0700-0799/0778.Swim in Rising Water/README_EN.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,33 @@ class Solution {
157157
}
158158
```
159159

160+
### **TypeScript**
161+
162+
```ts
163+
function swimInWater(grid: number[][]): number {
164+
const m = grid.length, n = grid[0].length;
165+
let visited = Array.from({ length: m }, () => new Array(n).fill(false));
166+
let ans = 0;
167+
let stack = [[0, 0, grid[0][0]]];
168+
const dir = [[0, 1], [0, -1], [1, 0], [-1, 0]];
169+
170+
while (stack.length) {
171+
let [i, j] = stack.shift();
172+
ans = Math.max(grid[i][j], ans);
173+
if (i == m - 1 && j == n - 1) break;
174+
for (let [dx, dy] of dir) {
175+
let x = i + dx, y = j + dy;
176+
if (x < m && x > -1 && y < n && y > -1 && !visited[x][y]) {
177+
visited[x][y] = true;
178+
stack.push([x, y, grid[x][y]]);
179+
}
180+
}
181+
stack.sort((a, b) => a[2] - b[2]);
182+
}
183+
return ans;
184+
};
185+
```
186+
160187
### **C++**
161188

162189
```cpp
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
function swimInWater(grid: number[][]): number {
2+
const m = grid.length, n = grid[0].length;
3+
let visited = Array.from({ length: m }, () => new Array(n).fill(false));
4+
let ans = 0;
5+
let stack = [[0, 0, grid[0][0]]];
6+
const dir = [[0, 1], [0, -1], [1, 0], [-1, 0]];
7+
8+
while (stack.length) {
9+
let [i, j] = stack.shift();
10+
ans = Math.max(grid[i][j], ans);
11+
if (i == m - 1 && j == n - 1) break;
12+
for (let [dx, dy] of dir) {
13+
let x = i + dx, y = j + dy;
14+
if (x < m && x > -1 && y < n && y > -1 && !visited[x][y]) {
15+
visited[x][y] = true;
16+
stack.push([x, y, grid[x][y]]);
17+
}
18+
}
19+
stack.sort((a, b) => a[2] - b[2]);
20+
}
21+
return ans;
22+
};

0 commit comments

Comments
 (0)