力扣每日一题 矩阵中的最大得分 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; // 返回最终计算出的最大总得分
    }
}
相关推荐
oem1105 分钟前
C++中的访问者模式变体
开发语言·c++·算法
IronMurphy23 分钟前
【算法二十七】230. 二叉搜索树中第 K 小的元素 199. 二叉树的右视图
算法·深度优先
暮冬-  Gentle°28 分钟前
C++中的工厂方法模式
开发语言·c++·算法
沐硕36 分钟前
《基于改进协同过滤与多目标优化的健康饮食推荐系统设计与实现》
java·python·算法·fastapi·多目标优化·饮食推荐·改进协同过滤
Z9fish40 分钟前
sse哈工大C语言编程练习47
c语言·数据结构·算法
nglff1 小时前
蓝桥杯抱佛脚第一天|简单模拟,set,map的使用
算法·职场和发展·蓝桥杯
仟濹1 小时前
【算法打卡day27(2026-03-19 周四)】蓝桥云课中Lv.1难度中的绝大部分题
算法·蓝桥杯
罗湖老棍子1 小时前
滑动窗口与双调队列:幕布覆盖问题(定右缩左满分板子)改编自LeetCode 1438
算法·滑动窗口·单调队列
CoovallyAIHub1 小时前
ICLR 2026 | MedAgent-Pro:用 Agent 工作流模拟临床医生的循证诊断过程
深度学习·算法·计算机视觉
实心儿儿1 小时前
算法7:两个数组的交集
算法·leetcode·职场和发展