依旧是dp table let grid = [[1, 3, 1], [1, 5, 1], [4, 2, 1]] function name(grid) { let dp = [] let L = grid[0].length let res = grid[0][0] for (let i = 0; i < grid.length; i++) { const temp = new Array(L).fill(0) dp.push(temp) } dp[0][0] = res for (let j = 0; j < grid.length; j++) { for (let z = 0; z < L; z++) { if (j === 0 && z === 0) continue if (z - 1 >= 0 && j - 1 >= 0) { dp[j][z] = Math.min(dp[j][z - 1] + grid[j][z], dp[j - 1][z] + grid[j][z]) } else if (z === 0 && j > 0) { dp[j][z] = dp[j - 1][0] + grid[j][z] } else { dp[j][z] = dp[0][z - 1] + grid[j][z] } } } return dp } console.log(name(grid));