给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。
思路
这道题属于第62题的变种,基本思路和其一样,都是分治的思想,感觉有点类似与数学归纳法:
每个格子都只可能从其上面或者左边到达,故到达每个格子的最短路径只能从其上面或左边产生,
所以只需比较上面和左边哪个的路径和最小,相加即可,需要注意边界的处理,第一行没有上面的格子;
第一列没有左边的格子,所以其路径直接由仅剩的格子路径相加即可,代码如下:
代码