news 2026/5/11 1:00:43

元宝Hunyuan LeetCode 1289.下降路径最小和 || public int minFallingPathSum(int[][] grid)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
元宝Hunyuan LeetCode 1289.下降路径最小和 || public int minFallingPathSum(int[][] grid)

以下是解决 LeetCode 1289. 下降路径最小和 II 问题的 Java 代码。该问题要求在一个 n × n 的矩阵
“grid” 中找到最小下降路径和,路径从第一行开始,到最后一行结束,每次移动到下一行的不同列(即不能停留在同一列)。

方法思路

  1. 动态规划:使用一个一维数组
    “dp” 来存储到达当前行每列的最小路径和。
  2. 状态转移:对于当前行第
    “j” 列,其最小路径和为当前格子值加上上一行中除同一列外的最小路径和。具体来说:
    • 先找到上一行所有列中的最小值(
      “min1”)和第二小值(
      “min2”)。
    • 如果上一行第
      “j” 列的值等于
      “min1”,则当前行第
      “j” 列的路径和为
      “grid[i][j] + min2”(因为不能使用同一列)。
    • 否则,使用
      “grid[i][j] + min1”。
  3. 初始化:第一行的路径和即为各元素本身。
  4. 结果提取:最后一行的路径和最小值即为答案。

优化点

  • 空间优化:仅使用两个一维数组(
    “dp” 和
    “newDp”)交替存储当前行和上一行的状态,避免使用二维数组。
  • 时间优化:每行处理中,通过一次遍历找到上一行的最小值和次小值,使得每个单元格的状态转移时间为 O(1),总时间复杂度为 O(n²)。

代码实现

class Solution {
public int minFallingPathSum(int[][] grid) {
int n = grid.length;
if (n == 0) return 0;

int[] dp = new int[n]; // 初始化第一行 for (int j = 0; j < n; j++) { dp[j] = grid[0][j]; } // 从第二行开始处理 for (int i = 1; i < n; i++) { int[] newDp = new int[n]; int min1 = Integer.MAX_VALUE; // 最小值 int min2 = Integer.MAX_VALUE; // 次小值 // 找出上一行的最小值和次小值 for (int k = 0; k < n; k++) { if (dp[k] < min1) { min2 = min1; min1 = dp[k]; } else if (dp[k] < min2) { min2 = dp[k]; } } // 更新当前行的状态 for (int j = 0; j < n; j++) { if (dp[j] == min1) { newDp[j] = grid[i][j] + min2; } else { newDp[j] = grid[i][j] + min1; } } dp = newDp; // 更新上一行为当前行 } // 找出最后一行的最小值 int ans = dp[0]; for (int j = 1; j < n; j++) { if (dp[j] < ans) { ans = dp[j]; } } return ans; }

}

代码解释

  1. 初始化:将
    “dp” 数组初始化为第一行的元素值。
  2. 逐行处理:
    • 对于每一行(从第二行开始),创建一个临时数组
      “newDp”。
    • 遍历上一行的
      “dp” 数组,找出最小值
      “min1” 和次小值
      “min2”。
    • 对于当前行的每个位置
      “(i, j)”:
      • 如果上一行同列的值等于
        “min1”,则当前路径和为
        “grid[i][j] + min2”。
      • 否则,当前路径和为
        “grid[i][j] + min1”。
    • 更新
      “dp” 为
      “newDp”,继续处理下一行。
  3. 返回结果:处理完所有行后,
    “dp” 数组存储了最后一行各列的路径和,返回其中的最小值。

此方法高效地解决了问题,适用于矩阵大小达到 200×200 的约束条件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 6:33:27

英文视频总结实用指南3个方法帮你快速提炼核心内容

做自媒体的日常&#xff0c;免不了要扒海外英文素材、追国际行业峰会、学YouTube博主的最新创作思路&#xff0c;动不动一两个小时的长视频&#xff0c;想快速抓准核心其实不用硬啃生肉&#xff0c;哪怕英文基础一般&#xff0c;这3个方法直接就能用&#xff0c;省下来的时间都…

作者头像 李华
网站建设 2026/4/13 8:21:17

一文学习 工作流开发 BPMN、 Flowable脱

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a; …

作者头像 李华
网站建设 2026/5/9 7:45:32

DCT-Net模型训练指南:使用自定义数据集打造专属风格

DCT-Net模型训练指南&#xff1a;使用自定义数据集打造专属风格 想要让AI画出属于你自己的独特卡通风格吗&#xff1f;通过DCT-Net训练专属模型&#xff0c;你就能将任何照片转换成独一无二的卡通形象。本文将手把手教你从数据准备到模型训练的全过程。 1. 了解DCT-Net&#xf…

作者头像 李华
网站建设 2026/4/13 4:06:53

LAG3重组兔单抗如何调控免疫检查点功能?

一、LAG3在免疫系统中具有怎样的表达特征&#xff1f;淋巴细胞活化基因3&#xff08;LAG3&#xff09;作为重要的免疫检查点分子&#xff0c;在免疫系统的调控中发挥着关键作用。该蛋白主要表达于活化的T淋巴细胞表面&#xff0c;包括CD4和CD8T细胞亚群。在生理状态下&#xff…

作者头像 李华