力扣每日一题 矩阵中的最大得分 DP

Problem: 3148. 矩阵中的最大得分

👨‍🏫 参考题解

Java 复制代码
class Solution {
    public int maxScore(List<List<Integer>> g) {
        int n = g.size(); // 获取矩阵的行数
        int m = g.get(0).size(); // 获取矩阵的列数
        int inf = 1 << 30; // 定义一个非常大的值,用于模拟正无穷大
        int ans = -inf; // 初始化结果为负无穷大,表示最大总得分
        int[][] f = new int[n][m]; // 创建二维数组,存储到达每个位置的最小路径值

        // 遍历矩阵中的每个元素
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                int t = inf; // 初始化t为正无穷大

                // 如果当前不是第一行,则考虑从上方移动到当前位置的情况
                if(i > 0){
                    t = Math.min(t, f[i-1][j]); // 更新t为上方路径的最小值
                }

                // 如果当前不是第一列,则考虑从左侧移动到当前位置的情况
                if(j > 0){
                    t = Math.min(t, f[i][j-1]); // 更新t为左边路径的最小值
                }

                // 计算当前格子可能的最大得分,并更新全局最大得分
                ans = Math.max(ans, g.get(i).get(j) - t);

                // 记录到达当前格子的最小路径值
                f[i][j] = Math.min(g.get(i).get(j), t);
            }
        }

        return ans; // 返回最终计算出的最大总得分
    }
}
相关推荐
ZZhYasuo5 分钟前
冒泡排序1
java·算法·排序算法
重生之后端学习6 分钟前
72. 编辑距离
数据结构·算法·leetcode·深度优先·图论
juleskk7 分钟前
3.15 复试训练
算法
j_xxx404_9 分钟前
力扣:525.连续数组和1314.矩阵区域和(二维前缀和)
算法·leetcode·矩阵
23.9 分钟前
【Java】Arrays工具类——数组操作终极指南
java·算法·面试
Sunsets_Red11 分钟前
模意义下及同余的公式整理
c语言·c++·数学·算法·c#·数论·信息学竞赛
计算机安禾14 分钟前
【C语言程序设计】第27篇:递归函数原理与实例分析
c语言·开发语言·数据结构·c++·算法·蓝桥杯·visual studio
無限進步D16 分钟前
C++ 万能头
开发语言·c++·算法·蓝桥杯·竞赛·万能头
Eward-an17 分钟前
1878:矩阵中最大的三个菱形和解析与实现
线性代数·矩阵
qq_4181017721 分钟前
C++中的状态模式
开发语言·c++·算法