【LeetCode热题100(87/100)】最小路径和

题目地址: 链接

状态转移方程:

d p i j = { g r i d 0 0 , 当 i = 1 且 j = 1 (起点) d p i − 1 1 + g r i d i − 1 0 , 当 i > 1 且 j = 1 (第一列) d p 1 j − 1 + g r i d 0 j − 1 , 当 i = 1 且 j > 1 (第一行) min ⁡ ( d p i − 1 j , d p i j − 1 ) + g r i d i − 1 j − 1 , 当 i > 1 且 j > 1 (非边界,取左/上最小路径和 + 当前值) dpij = \begin{cases} grid00, & \text{当 } i=1 \text{ 且 } j=1 \text{(起点)} \\ dpi-11 + gridi-10, & \text{当 } i>1 \text{ 且 } j=1 \text{(第一列)} \\ dp1j-1 + grid0j-1, & \text{当 } i=1 \text{ 且 } j>1 \text{(第一行)} \\ \min(dpi-1j, dpij-1) + gridi-1j-1, & \text{当 } i>1 \text{ 且 } j>1 \text{(非边界,取左/上最小路径和 + 当前值)} \end{cases} dpij=⎩ ⎨ ⎧grid00,dpi−11+gridi−10,dp1j−1+grid0j−1,min(dpi−1j,dpij−1)+gridi−1j−1,当 i=1 且 j=1(起点)当 i>1 且 j=1(第一列)当 i=1 且 j>1(第一行)当 i>1 且 j>1(非边界,取左/上最小路径和 + 当前值)

js 复制代码
/*
 * @lc app=leetcode.cn id=64 lang=typescript
 *
 * [64] 最小路径和
 */

// @lc code=start
function minPathSum(grid: number[][]): number {
    const [n, m] = [grid.length, grid[0].length];
    const dp = Array.from({length: n + 1}, () => new Array(m + 1).fill(0));
    dp[1][1] = grid[0][0];
    for(let i = 2; i <= n; i ++) dp[i][1] = dp[i - 1][1] + grid[i - 1][0];
    for(let i = 2; i <= m; i ++) dp[1][i] = dp[1][i - 1] + grid[0][i - 1];

    for(let i = 2; i <= n; i ++) {
        for(let j = 2; j <= m; j ++) {
            dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];
        }
    }

    return dp[n][m];
};
// @lc code=end
相关推荐
luj_17687 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
geats人山人海10 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
漂流瓶jz11 小时前
UVA-12627 奇怪的气球膨胀 题解答案代码 算法竞赛入门经典第二版
算法·图论·递归·aoapc·算法竞赛入门经典·uva·12627
jarvisuni11 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
kobesdu11 小时前
流形上的优化:SO(3)与SE(3)的广义加减法在FAST-LIO中如何简化状态估计
人工智能·算法·fastlio
白狐_79811 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
乐观勇敢坚强的老彭11 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶11 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
Hi李耶12 小时前
【LeetCode】4-寻找两个正序数组的中位数
算法·leetcode·职场和发展
图灵机z12 小时前
【算法提高课】AcWing 1027. 方格取数 长期攻克提高课-day3(3/219)
算法