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

【LeetCode 热题100】网格路径类 DP 系列题:不同路径 最小路径和(力扣62 / 64 )(Go语言版)

🧭 网格路径类 DP 系列题:不同路径 & 最小路径和(LeetCode 62 / 64)

  • 🧮 62. 不同路径(计算路径总数)
  • 💰 64. 最小路径和(求路径最小代价)

🧮 62. 不同路径(Unique Paths)

📌 题目描述

一个机器人位于一个 m x n 网格左上角,只能向下或向右移动,每次一步。问有多少条不同路径可以走到右下角?


🧠 解题思路

这是一道经典的二维动态规划问题。

✅ 状态定义

dp[i][j] 表示走到第 i 行第 j 列的路径数量。

🔁 状态转移

机器人只能从上方或左方到达 (i,j)

dp[i][j] = dp[i-1][j] + dp[i][j-1]
🎯 初始条件
  • 第一行 & 第一列都只有一条路径可达。

✅ Go 实现(二维 DP)

func uniquePaths(m int, n int) int {dp := make([][]int, m)for i := range dp {dp[i] = make([]int, n)dp[i][0] = 1}for j := 0; j < n; j++ {dp[0][j] = 1}for i := 1; i < m; i++ {for j := 1; j < n; j++ {dp[i][j] = dp[i-1][j] + dp[i][j-1]}}return dp[m-1][n-1]
}
💡 空间优化

由于每次只依赖上一行和当前行,可以用一维数组滚动更新:

func uniquePaths(m int, n int) int {dp := make([]int, n)for i := range dp {dp[i] = 1}for i := 1; i < m; i++ {for j := 1; j < n; j++ {dp[j] += dp[j-1]}}return dp[n-1]
}

💰 64. 最小路径和(Minimum Path Sum)

📌 题目描述

给定一个 m x n 的网格,每个单元格内有一个非负整数,求从左上角到右下角一条路径,使得路径上数字总和最小。


🧠 解题思路

与上一题相似,不过这题是求最小路径代价

✅ 状态定义

dp[i][j] 表示走到 (i,j) 所需的最小路径和。

🔁 状态转移

只能从上方或左方来:

dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]

✅ Go 实现

func minPathSum(grid [][]int) int {m, n := len(grid), len(grid[0])dp := make([][]int, m)for i := range dp {dp[i] = make([]int, n)}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 a}return b
}

🔚 总结与对比

题目目标状态定义转移逻辑可否空间优化
62. 不同路径统计路径条数dp[i][j] 为到达 (i,j) 的路径数dp[i-1][j] + dp[i][j-1]✅ 可用一维数组优化
64. 最小路径和求最小路径值dp[i][j] 为到达 (i,j) 的最小和min(dp[i-1][j], dp[i][j-1]) + grid[i][j]✅ 可用一维数组优化

✏️ 思维延伸

如果想更进一步,可以尝试:

    1. 不同路径 II(加上障碍)
    1. 三角形最小路径和(从底向上 DP)
    1. 下降路径最小和(支持斜着走)

这类问题的关键在于:

✅ 明确“状态”
🔁 写出“转移”
🎯 找准“边界”


相关文章:

  • 第6章:Neo4j数据导入与导出
  • 自定义连接线程池
  • 408第一季 - 数据结构 - 图
  • mybatis执行insert如何返回id
  • 星耀8上市品鉴暨北京中和吉晟吉利银河用户中心开业媒体见面会
  • 基于多维视角的大模型提升认知医疗过程层次激励编程分析
  • 关于IE浏览器被绑定安装,还卸载不掉
  • RabbitMQ work模型
  • 云原生监控体系建设:Prometheus+Grafana的企业级实践
  • 【11408学习记录】考研写作双核引擎:感谢信+建议信复合结构高分模板(附16年真题精讲)
  • LeetCode - 148. 排序链表
  • 自动驾驶科普(百度Apollo)学习笔记
  • vue.js not detected解决方法
  • LinuxSamba服务器配置篇
  • 三级流水线是什么?
  • 12-OPENCV ROCKX项目 人脸拍照
  • 抖音怎么下载没有水印的视频?
  • 【计算机网络】三报文握手建立TCP连接
  • 【iOS】JSONModel源码学习
  • 台湾TEMI协会竞赛——0、竞赛介绍及开发板介绍
  • 自己的博客和自己的网站做友链/深圳小程序开发公司
  • 上海网站建设公司联系方式/怎样做好销售和客户交流
  • 小程序制作流程微信/河北百度竞价优化
  • 哈密市建设局网站/百度搜索百度
  • 企业网站群建设的原因/软文案例200字
  • 建设网站培训/网站百度关键词排名软件