最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
我先是使用的递归,在25个例子卡住了,原因超时,后来在自己的编译器上测试25例子时是可以出来的

public  class Solution {public static void main(String[] a){int[][] arr=new int[][] {{3,8,6,0,5,9,9,6,3,4,0,5,7,3,9,3},{0,9,2,5,5,4,9,1,4,6,9,5,6,7,3,2},{8,2,2,3,3,3,1,6,9,1,1,6,6,2,1,9},{1,3,6,9,9,5,0,3,4,9,1,0,9,6,2,7},{8,6,2,2,1,3,0,0,7,2,7,5,4,8,4,8},{4,1,9,5,8,9,9,2,0,2,5,1,8,7,0,9},{6,2,1,7,8,1,8,5,5,7,0,2,5,7,2,1},{8,1,7,6,2,8,1,2,2,6,4,0,5,4,1,3},{9,2,1,7,6,1,4,3,8,6,5,5,3,9,7,3},{0,6,0,2,4,3,7,6,1,3,8,6,9,0,0,8},{4,3,7,2,4,3,6,4,0,3,9,5,3,6,9,3},{2,1,8,8,4,5,6,5,8,7,3,7,7,5,8,3},{0,7,6,6,1,2,0,3,5,0,8,0,8,7,4,3},{0,4,3,4,9,0,1,9,7,7,8,6,4,6,9,5},{6,5,1,9,9,2,2,7,4,2,7,2,2,3,7,2},{7,1,9,6,1,2,7,0,9,6,6,4,4,5,1,0},{3,4,9,2,8,3,1,2,6,9,7,0,2,4,2,0},{5,1,8,8,4,6,8,5,2,4,1,6,2,2,9,7}};Solution solution=new Solution();System.out.println(solution.minPathSum(arr));}public int minPathSum(int[][] grid) {if(grid==null||(grid.length==0&&grid[0].length==0)){return 0;}return test(0,0,grid);}public static int test(int i,int j,int[][] arr){if(i==arr.length-1&&j==arr[0].length-1){return arr[i][j];}if(i==arr.length-1){return arr[i][j]+test(i,j+1,arr);}if(j==arr[0].length-1){return arr[i][j]+test(i+1,j,arr);}int sum1=arr[i][j]+test(i+1,j,arr);int sum2=arr[i][j]+test(i,j+1,arr);return Math.min(sum1,sum2);}
}

后来学习的动态规划:

class Solution {public int minPathSum(int[][] grid) {//先判断二维数组是不是空或者0if (grid == null || grid.length == 0 || grid[0].length == 0) {return 0;}int row=grid.length,columns=grid[0].length;//建立一个新的数组存放到每格最小的和int[][] dp=new int[row][columns];//循环遍历二维数组for(int i=0;i<row;i++){for(int j=0;j<columns;j++){//有几个特殊的地方 起始点,0行和0列,分别写ifif(i==0&&j==0){dp[i][j]=grid[i][j];continue;}if(i==0){dp[i][j]=grid[i][j]+dp[i][j-1];continue; }if(j==0){dp[i][j]=grid[i][j]+dp[i-1][j];continue; }//以示例为例子,中间格子大概就只有两条路可以到,一个在上面一个在左边,所以取两者最小dp[i][j]=grid[i][j]+Math.min(dp[i-1][j],dp[i][j-1]);}}return dp[row-1][columns-1];}
}

力扣算法学习(十四)相关推荐

  1. 力扣算法学习计划打卡:第五天

    876链表的中间结点,19删除链表的倒数第N个节点 链表的中间结点 用两个指针 slow 与 fast 一起遍历链表.slow 一次走一步,fast 一次走两步.那么当 fast 到达链表的末尾时,s ...

  2. 力扣算法学习计划打卡:第七天

    733 图像渲染,695 岛屿的最大面积 图像渲染 广度优先搜索 var(dx = []int{1,0,-1,0}dy = []int{0,1,0,-1} ) func floodFill(image ...

  3. 力扣算法学习计划打卡:第六天

    3无重复字符的最长子串,567 字符串的排列 无重复字符的最长子串 滑动窗口/双指针 func max(a,b int)int{if a<b{return b}return a }func le ...

  4. 力扣算法学习计划打卡:第八天

    617.合并二叉树,116.填充每个节点的下一个右侧节点指针 合并二叉树 深度优先搜索 /*** Definition for a binary tree node.* type TreeNode s ...

  5. 力扣算法学习(十二)

    斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 .该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0,F(1) = 1 F(n) ...

  6. 力扣算法学习计划打卡:第四天

    344反转字符串,557. 反转字符串中的单词 III 反转字符串 双指针,分别指向字符数组的头和尾,交换后,两个指针同时向中间移动 func reverseString(s []byte) {for ...

  7. 力扣算法学习计划打卡:第二天

    977有序数组的平方,排序算法复习,189轮转数组 https://leetcode-cn.com/study-plan/algorithms/?progress=lv45wk7 有序数组的平方 排序 ...

  8. 力扣算法学习计划打卡:第三天

    283 移动零,167. 两数之和 II - 输入有序数组 移动零 不能复制数组,考虑计数0的个数,当前数组元素前存在counts个0元素,该数组元素向前移动counts个值,最后将counts个0放 ...

  9. 力扣算法学习计划打卡:第一天

    704二分查找,278第一个错误版本,35搜索插入位置 二分查找 https://leetcode-cn.com/study-plan/algorithms/?progress=lv45wk7 顺序查 ...

最新文章

  1. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
  2. Windows IIS注册asp 此操作系统版本不支持此选项 错误解决方法
  3. ubuntu11.10 安装tpc_w
  4. 程序员究竟该如何提高效率
  5. 智能家居 (7) ——网络服务器线程控制
  6. 使用VS Code从零开始开发调试.NET Core 1.1
  7. 回车键提交与不提交表单的解决方法
  8. 每天一个linux命令(28):diff 命令
  9. matlab 中最小二乘拟合,matlab 最小二乘拟合
  10. 算法笔记--STL中的各种遍历及查找(待增)
  11. 调出远程桌面的任务管理器
  12. Java实现的各种排序算法
  13. 资源分享 | 敬伟 PS 教程 ABCD 四套全集
  14. ae在哪里直接复制合成_AE脚本-合成复制脚本(同合成复制修改相互不影响)True Comp Duplicator v3.9.11+使用教程...
  15. 阴阳师服务器维护内容,阴阳师8月1日维护内容介绍_友人帐弈鬼切内容介绍_3DM手游...
  16. 单生狗必备之如何用Python给PLMM表白
  17. gimtehseet工时管理系统介绍
  18. 详解冬奥冠军背后的AI黑科技
  19. coreldraw x4如何出血_coreldraw x4教程
  20. 游戏开发图书推荐--我读过的技术经典图书

热门文章

  1. 波士顿动力开源代码_失去动力两年后,我如何开始开源之旅
  2. 计算机无法正常进入系统,式电脑开机提示Error 1962无法正常开机进入系统怎么办?...
  3. 记2018年北航夏令营+机试面试心得体会
  4. 才22岁!这位00后博士拟任职985高校!
  5. 华硕A456UR7500初次非完美黑苹果安装教程
  6. Python操作Excel的Xlwings教程(五)
  7. 红米9A android版本,红米9A配置参数-参数详情
  8. 马里奥:谁说我老了?任天堂今夏推新手游
  9. 算法笔记(11)逻辑回归算法及Python代码实现
  10. 跨系统实时同步数据解决方案