lc.64. 最小路径和
func minPathSum(grid [][]int) int { //初始化条件 rows,columes := len(grid),len(grid[0]) //一、构建二维dp数组 //1、分配内存,先分配行,后分配列 dp := make([][]int,rows) for i:=0;i<rows;i++{ dp[i] = make([]int,columes) } //2、初始化赋值 dp[0][0] = grid[0][0] //二、dp数组的递推公式 //1、例外条件 if len(grid)==0 || len(grid[0])==0{ return 0 } //2、第一列dp递推 for j:=1;j<columes;j++{ dp[0][j] = dp[0][j-1] + grid[0][j] } //3、第一行dp递推 for i:=1;i<rows;i++{ dp[i][0] = dp[i-1][0] + grid[i][0] } //4、内部元素递推 for i:=1;i<rows;i++{ for j:=1;j<columes;j++{ //递推公式 dp[i][j] = min(dp[i-1][j],dp[i][j-1])+grid[i][j] } } //三、返回dp数组 return dp[rows-1][columes-1] } func min(x,y int)int{ if x>=y{ return y } return x }