Skip to content

Commit 631fa79

Browse files
committed
feat: add typescript solution to lc problem: No.1368
No.1368.Minimum Cost to Make at Least One Valid Path in a Grid
1 parent f3f7ec5 commit 631fa79

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

solution/1300-1399/1368.Minimum Cost to Make at Least One Valid Path in a Grid/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,35 @@ class Solution {
155155
}
156156
```
157157

158+
### **TypeScript**
159+
160+
```ts
161+
function minCost(grid: number[][]): number {
162+
const m = grid.length, n = grid[0].length;
163+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
164+
ans[0][0] = 0;
165+
let queue = [[0, 0]];
166+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
167+
while (queue.length) {
168+
let [x, y] = queue.shift();
169+
for (let step = 1; step < 5; step++) {
170+
let [dx, dy] = dirs[step - 1];
171+
let [i, j] = [x + dx, y + dy];
172+
if (i < 0 || i >= m || j < 0 || j >= n) continue;
173+
let cost = ~~(grid[x][y] != step) + ans[x][y];
174+
if (cost >= ans[i][j]) continue;
175+
ans[i][j] = cost;
176+
if (grid[x][y] == step) {
177+
queue.unshift([i, j]);
178+
} else {
179+
queue.push([i, j]);
180+
}
181+
}
182+
}
183+
return ans[m - 1][n - 1];
184+
};
185+
```
186+
158187
### **C++**
159188

160189
```cpp

solution/1300-1399/1368.Minimum Cost to Make at Least One Valid Path in a Grid/README_EN.md

+29
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,35 @@ class Solution {
125125
}
126126
```
127127

128+
### **TypeScript**
129+
130+
```ts
131+
function minCost(grid: number[][]): number {
132+
const m = grid.length, n = grid[0].length;
133+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
134+
ans[0][0] = 0;
135+
let queue = [[0, 0]];
136+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
137+
while (queue.length) {
138+
let [x, y] = queue.shift();
139+
for (let step = 1; step < 5; step++) {
140+
let [dx, dy] = dirs[step - 1];
141+
let [i, j] = [x + dx, y + dy];
142+
if (i < 0 || i >= m || j < 0 || j >= n) continue;
143+
let cost = ~~(grid[x][y] != step) + ans[x][y];
144+
if (cost >= ans[i][j]) continue;
145+
ans[i][j] = cost;
146+
if (grid[x][y] == step) {
147+
queue.unshift([i, j]);
148+
} else {
149+
queue.push([i, j]);
150+
}
151+
}
152+
}
153+
return ans[m - 1][n - 1];
154+
};
155+
```
156+
128157
### **C++**
129158

130159
```cpp
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function minCost(grid: number[][]): number {
2+
const m = grid.length, n = grid[0].length;
3+
let ans = Array.from({ length: m }, v => new Array(n).fill(Infinity));
4+
ans[0][0] = 0;
5+
let queue = [[0, 0]];
6+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]];
7+
while (queue.length) {
8+
let [x, y] = queue.shift();
9+
for (let step = 1; step < 5; step++) {
10+
let [dx, dy] = dirs[step - 1];
11+
let [i, j] = [x + dx, y + dy];
12+
if (i < 0 || i >= m || j < 0 || j >= n) continue;
13+
let cost = ~~(grid[x][y] != step) + ans[x][y];
14+
if (cost >= ans[i][j]) continue;
15+
ans[i][j] = cost;
16+
if (grid[x][y] == step) {
17+
queue.unshift([i, j]);
18+
} else {
19+
queue.push([i, j]);
20+
}
21+
}
22+
}
23+
return ans[m - 1][n - 1];
24+
};

0 commit comments

Comments
 (0)