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

leetcode64 最小路径和

题目

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。

示例

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

解析

这道题现在看来会相对简单一些,使用动规五部曲直接分析一下就行
1.dp数组及其含义
dp[i][j]表示走到grid[i][j]的时候最小路径和为dp[i][j]
2.递推公式
题目中说了只能向下或者向右,那么就是:dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]
3.初始化
除了dp[0][0]需要初始化之外,第一行和第一列也需要初始化,

func minPathSum(grid [][]int) int {if len(grid) == 0 || len(grid[0]) == 0 {return 0}m := len(grid)n := len(grid[0])dp := make([][]int, m+1)for i := 0; i <= m; i++ {dp[i] = make([]int, n+1)}dp[0][0] = grid[0][0]for i := 1; i < m; i++ { // 第一行初始化dp[i][0] = dp[i-1][0] + grid[i][0]}for j := 1; j < n; j++ { // 第一列初始化dp[0][j] = dp[0][j-1] + grid[0][j]}for i := 1; i < m; i++ {for j := 1; j < n; j++ {dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j] // 递推公式}}return dp[m-1][n-1]
}func min(a, b int) int {if a > b {return b}return a
}
http://www.lryc.cn/news/185056.html

相关文章:

  • 金盘图书馆微信管理后台信息泄露漏洞 复现
  • nginx实现负载均衡(三)
  • Android---深入理解ClassLoader的加载机制
  • 超自动化加速落地,助力运营效率和用户体验显著提升|爱分析报告
  • Linux posix_spawn和fork的区别
  • 聊聊分布式架构02——Http到Https
  • 1024 画跳动的爱心#程序代码 #编程语言 #计算机
  • 【排序算法】堆排序详解与实现
  • java Spring Boot整合jwt实现token生成
  • 如何使用Git和GitHub进行版本控制
  • 彻底解决 WordPress cURL error 28 错误
  • LLM项目代码改写
  • 小谈设计模式(14)—建造者模式
  • 【kubernetes】k8s中的选主机制
  • 学生选课系统基础版
  • redis no-appendfsync-on-rewrite
  • Spring Cloud Gateway2之路由详解
  • 阿里云RDS关系型数据库详细介绍_多版本数据库说明
  • Vue中的数据绑定
  • 前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》
  • [JAVAee]Spring拦截器
  • 【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)
  • 【微服务】七. http客户端Feign
  • 【Spring Boot 源码学习】OnWebApplicationCondition 详解
  • 力扣之二分法
  • css图形化理解--扭曲函数skew()
  • 八、互联网技术——物联网
  • 聊聊MySQL的聚簇索引和非聚簇索引
  • python之subprocess模块详解
  • 第10讲:Vue组件的定义与注册