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

2025年- H92-Lc200-- 64.最小路径和(多维动态规划)--Java版

1.题目描述

在这里插入图片描述
在这里插入图片描述

2.思路

(1)dp[i][j] 表示从起点 (0,0) 走到位置 (i,j) 的最小路径和
(2)对于位置 (i, j),只能从 上面 (i-1,j) 或 左边 (i,j-1) 走过来,所以:
dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1])
当前格子总路径和 = 当前格子的值 + 从上或左走过来的最小路径和
(3)初始化,从起点到起点的路径和(只有这一个格子),要“消耗”这个格子的值了,所以路径和初始就是 1。
起点:dp[0][0] = grid[0][0]
第一行只能从左边走来:
dp[0][j] = dp[0][j-1] + grid[0][j]; // for j in 1…n-1
第一列只能从上面走来:
dp[i][0] = dp[i-1][0] + grid[i][0]; // for i in 1…m-1

(4)遍历顺序:
必须从上到下、从左到右,因为 dp[i][j] 依赖于 dp[i-1][j] 和 dp[i][j-1]。

3.代码实现

class Solution {public int minPathSum(int[][] grid) {//行数,grid[m][n]是存储最小数据和的数据int m=grid.length;//列数int n=grid[0].length;if(m==0||n==0){//只有一行或者一列的情况,不满足找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。return 0;}//向右走,进行数组初始化,初始化第一行,也就是列数n会增加for(int j=1;j<n;j++){//因为是求最小路径和,当前元素的值,等于他左边元素加上当前元素的值grid[0][j]=grid[0][j]+grid[0][j-1];}//向下走,初始化第一列for(int i=1;i<m;i++){grid[i][0]=grid[i][0]+grid[i-1][0];}for(int j=1;j<n;j++){//每次只能向右走for(int i=1;i<m;i++){//每次只能向下走grid[i][j]=grid[i][j]+Math.min(grid[i-1][j],grid[i][j-1]);}}return grid[m-1][n-1];}
}
http://www.dtcms.com/a/267756.html

相关文章:

  • 详解存储单位、内存寻址及数据存储方式
  • Feign调用报“请求方法POST不支持“错误
  • WPF学习笔记(25)MVVM框架与项目实例
  • 基于pcl点云库实现激光雷达数据采集
  • java整合itext pdf实现自定义PDF文件格式导出
  • 调参——optuna
  • Python 面向对象编程(OOP)全面详解:类、对象与 API
  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 线程池的七个参数设计源于对高并发场景下资源管理、系统稳定性与性能平衡的深刻洞察
  • Policy Gradient【强化学习的数学原理】
  • 【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式
  • JMM--数据原子操作
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?
  • Spring--循环依赖以及三级缓存详解
  • Linux安装java后没法运行
  • 计算机组成原理《浮点数的存储》
  • Python基础之字典(Dictionary)全面指南
  • 南山科技园的步行
  • Qt项目锻炼——TODO清单(三)
  • 【论文笔记】OctoThinker:突破 Llama 推理瓶颈的中期训练范式
  • 乌邦图(20.04)添加中文拼音(中文输入法)
  • 实现电池储能装置的双向DCDC
  • Qt项目锻炼——TODO清单(二)
  • jmm--volatile
  • 前端面试专栏-算法篇:18. 查找算法(二分查找、哈希查找)
  • vue3 el-input el-select 非空校验
  • 大数据学习2:HIve
  • Linux进程管理:从基础到实战
  • Qt Ribbon效果界面
  • QT6 源(154)模型视图架构里的列表视图 QListView:先学习属性部分,