Skip to content

Commit 5b4fffd

Browse files
authored
Update 1368-minimum-cost-to-make-at-least-one-valid-path-in-a-grid.js
1 parent fd0f57a commit 5b4fffd

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

1368-minimum-cost-to-make-at-least-one-valid-path-in-a-grid.js

+31
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,34 @@ const minCost = function (grid) {
3333
}
3434
return dp[n - 1][m - 1]
3535
}
36+
37+
// another
38+
39+
function minCost(grid) {
40+
const INF = 1e9, m = grid.length, n = grid[0].length
41+
const dirs = [[0, 1], [0, -1], [1, 0], [-1, 0]] // right, left, down, up
42+
let cost = 0
43+
const dp = Array.from({ length: m }, () => Array(n).fill(INF))
44+
const q = []
45+
dfs(0, 0, 0)
46+
while(q.length) {
47+
cost++
48+
for (let size = q.length; size > 0; size--) {
49+
const [r, c] = q.shift()
50+
for(let [dx, dy] of dirs) {
51+
dfs(r + dx, c + dy, cost)
52+
}
53+
}
54+
}
55+
56+
return dp[m - 1][n - 1]
57+
function dfs(r, c, cost) {
58+
if(r < 0 || r >= m || c < 0 || c >= n || dp[r][c] !== INF) return
59+
dp[r][c] = cost
60+
q.push([r, c])
61+
const nextDir = grid[r][c] - 1
62+
const [dx, dy] = dirs[nextDir]
63+
dfs(r + dx, c + dy, cost)
64+
}
65+
}
66+

0 commit comments

Comments
 (0)