当前位置: 首页 > news >正文

64. 最小路径和 java解决

64. 最小路径和

题目描述:

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

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

(相关标签:数组、动态规划、矩阵)

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。


示例 2:

输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 200
0 <= grid[i][j] <= 100
通过次数411,142提交次数592,92


解决

思路和算法:动态规划

        核心算法,dp[ i ][ j ] = grip[ i ][ j ] + Math.min( dp[ i - 1 ][ j +1 ] )

代码:

class Solution {
    /**
     思路和算法:动态规划
          定义一个二位数组dp[m][n],dp[ i ][ j ] 记录是左上角[ 0 ][ 0 ]走到[ i ][ j ]的最短路径值
          因为[ i ][ j ]位置只能从 左[ i - 1 ] 或者 上[ j - 1 ]走来,所以
          dp[ i ][ j ]的最短路径值 = grip[ i ][ j ] + Math.min( 左一格的dp[ i - 1 ][ j ]值,上一格的dp[ i ][ j - 1 ]值 )
     */
    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[ 0 ].length;
        int[][] dp = new int[ m ][ n ];
        for ( int i = 0; i < m; i ++ ) {
            for ( int j = 0; j < n; j ++ ) {
                if ( i == 0 ) {
                    if ( j == 0 ) 
                        dp[ i ][ j ] = grid[ i ][ j ];
                    else 
                        dp[ i ][ j ] = grid[ i ][ j ] + dp[ i ][ j - 1 ];
                } else if ( j == 0 ) {
                    dp[ i ][ j ] = grid[ i ][ j ] + dp[ i - 1 ][ j ];
                } else 
                    dp[ i ][ j ] = grid[ i ][ j ] + Math.min( dp[ i - 1 ][ j ], dp[ i ][ j - 1 ] );
            }
        }
        return dp[ m - 1 ][ n - 1 ];
    }
}

 

相关文章:

  • 【mia】rtc_Push和player拉取
  • GDScript进行HTTP请求以及session问题
  • Python + Selenium + Chrome Driver 自动化点击+评论+刷弹幕(仅供学习)
  • workmanager导入android studio
  • Fast R-CNN
  • 【Spring系列03】依赖注入(DI)[之set注入]
  • 机器学习笔记之支持向量机(二)引出对偶问题
  • invokeBeanFactoryPostProcessors
  • 使用 pnpm monorepo + ts 制作个功能完善的 CLI 命令行工具
  • leetcode:714. 买卖股票的最佳时机含手续费
  • 基于MATLAB的曼彻斯特调制与解调实现
  • SpringBoot 实现 Oracle 主从数据库的动态切换,并实现读写分离
  • 24.缓存
  • 【AJAX是什么】【AJAX的基本使用】
  • 丈母娘想女婿了,小伟和陈萌刚拍完婚纱照,就被大衣哥安排去看望
  • [NodeJS] 关于Buffer
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • DataBase in Android
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Fastjson的基本使用方法大全
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • js面向对象
  • js正则,这点儿就够用了
  • spring cloud gateway 源码解析(4)跨域问题处理
  • unity如何实现一个固定宽度的orthagraphic相机
  • web标准化(下)
  • 浮现式设计
  • 构建工具 - 收藏集 - 掘金
  • 配置 PM2 实现代码自动发布
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • Mac 上flink的安装与启动
  • 容器镜像
  • ​iOS安全加固方法及实现
  • "无招胜有招"nbsp;史上最全的互…
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###C语言程序设计-----C语言学习(3)#
  • #13 yum、编译安装与sed命令的使用
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #LLM入门|Prompt#3.3_存储_Memory
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (007)XHTML文档之标题——h1~h6
  • (4)(4.6) Triducer
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)linux 命令大全
  • (转)linux下的时间函数使用
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复