| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- package main
 
- import (
 
- 	"fmt"
 
- )
 
- /* func minInt(x, y int) int {
 
- 	if x < y {
 
- 		return x
 
- 	}
 
- 	return y
 
- } */
 
- func minPathSumOld(grid [][]int) int {
 
- 	m, n := len(grid), len(grid[0])
 
- 	minGrid := make([][]int, m)
 
- 	// 1st col
 
- 	for i, sum := 0, 0; i < m; i++ {
 
- 		minGrid[i] = make([]int, n)
 
- 		sum += grid[i][0]
 
- 		minGrid[i][0] = sum
 
- 	}
 
- 	// 1st row
 
- 	for i, sum := 1, grid[0][0]; i < n; i++ {
 
- 		sum += grid[0][i]
 
- 		minGrid[0][i] = sum
 
- 	}
 
- 	for i := 1; i < m; i++ {
 
- 		for j := 1; j < n; j++ {
 
- 			minGrid[i][j] = grid[i][j] + minInt(minGrid[i-1][j], minGrid[i][j-1])
 
- 		}
 
- 	}
 
- 	fmt.Println(minGrid)
 
- 	return minGrid[m-1][n-1]
 
- }
 
- func minPathSum(grid [][]int) int {
 
- 	// no need to create a new minGrid!
 
- 	m, n := len(grid), len(grid[0])
 
- 	// 1st col
 
- 	for i := 1; i < m; i++ {
 
- 		grid[i][0] += grid[i-1][0]
 
- 	}
 
- 	// 1st row
 
- 	for i := 1; i < n; i++ {
 
- 		grid[0][i] += grid[0][i-1]
 
- 	}
 
- 	for i := 1; i < m; i++ {
 
- 		for j := 1; j < n; j++ {
 
- 			grid[i][j] += minInt(grid[i-1][j], grid[i][j-1])
 
- 		}
 
- 	}
 
- 	return grid[m-1][n-1]
 
- }
 
- /* func main() {
 
- 	g1 := [][]int{
 
- 		{1, 3, 1},
 
- 		{1, 5, 1},
 
- 		{4, 2, 1},
 
- 	}
 
- 	fmt.Println(minPathSum(g1))
 
- } */
 
 
  |