Skip to content

Commit 1df4fcb

Browse files
committed
feat: add typescript solution to lc problem: No.2290
No.2290.Minimum Obstacle Removal to Reach Corner
1 parent 748bfc6 commit 1df4fcb

File tree

3 files changed

+57
-2
lines changed

3 files changed

+57
-2
lines changed

solution/2200-2299/2290.Minimum Obstacle Removal to Reach Corner/README.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,25 @@ func minimumObstacles(grid [][]int) int {
212212
### **TypeScript**
213213

214214
```ts
215-
215+
function minimumObstacles(grid: number[][]): number {
216+
const m = grid.length, n = grid[0].length;
217+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
218+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
219+
ans[0][0] = 0;
220+
let deque = [[0, 0]];
221+
while (deque.length) {
222+
let [x, y] = deque.shift();
223+
for (let [dx, dy] of dirs) {
224+
let [i, j] = [x + dx, y + dy];
225+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1) continue;
226+
const cost = grid[i][j];
227+
if (ans[x][y] + cost >= ans[i][j]) continue;
228+
ans[i][j] = ans[x][y] + cost;
229+
deque.push([i, j]);
230+
}
231+
}
232+
return ans[m - 1][n - 1];
233+
};
216234
```
217235

218236
### **...**

solution/2200-2299/2290.Minimum Obstacle Removal to Reach Corner/README_EN.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,25 @@ func minimumObstacles(grid [][]int) int {
186186
### **TypeScript**
187187

188188
```ts
189-
189+
function minimumObstacles(grid: number[][]): number {
190+
const m = grid.length, n = grid[0].length;
191+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
192+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
193+
ans[0][0] = 0;
194+
let deque = [[0, 0]];
195+
while (deque.length) {
196+
let [x, y] = deque.shift();
197+
for (let [dx, dy] of dirs) {
198+
let [i, j] = [x + dx, y + dy];
199+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1) continue;
200+
const cost = grid[i][j];
201+
if (ans[x][y] + cost >= ans[i][j]) continue;
202+
ans[i][j] = ans[x][y] + cost;
203+
deque.push([i, j]);
204+
}
205+
}
206+
return ans[m - 1][n - 1];
207+
};
190208
```
191209

192210
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function minimumObstacles(grid: number[][]): number {
2+
const m = grid.length, n = grid[0].length;
3+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
4+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
5+
ans[0][0] = 0;
6+
let deque = [[0, 0]];
7+
while (deque.length) {
8+
let [x, y] = deque.shift();
9+
for (let [dx, dy] of dirs) {
10+
let [i, j] = [x + dx, y + dy];
11+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1) continue;
12+
const cost = grid[i][j];
13+
if (ans[x][y] + cost >= ans[i][j]) continue;
14+
ans[i][j] = ans[x][y] + cost;
15+
deque.push([i, j]);
16+
}
17+
}
18+
return ans[m - 1][n - 1];
19+
};

0 commit comments

Comments
 (0)