leetcode刷题笔记(Golang)--64. Minimum Path Sum

64. Minimum Path Sum

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.

Example:

Input:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.

func minPathSum(grid [][]int) int {
	m := len(grid)
	if m == 0 {
		return 0
	}
	n := len(grid[0])
	if n == 0 {
		return 0
	}

	paths := make([][]int, m+1)
	for i := range paths {
		paths[i] = make([]int, n+1)
	}
	paths[1][1] = grid[0][0]

	for i := 1; i <= m; i++ {
		for j := 1; j <= n; j++ {
			if i == 1 && j == 1 {
				continue
			} else {
				curr := 0
				if i == 1 {
					curr = paths[i][j-1]
				} else if j == 1 {
					curr = paths[i-1][j]
				} else {
					if paths[i][j-1] < paths[i-1][j] {
						curr = paths[i][j-1]
					} else {
						curr = paths[i-1][j]
					}
				}
				paths[i][j] = curr + grid[i-1][j-1]
			}
		}
	}
	return paths[m][n] 
}
发布了65 篇原创文章 · 获赞 0 · 访问量 365

猜你喜欢

转载自blog.csdn.net/weixin_44555304/article/details/104281169