力扣每日一题 矩阵中的最大得分 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; // 返回最终计算出的最大总得分
    }
}
相关推荐
2401_8582861117 分钟前
109.【C语言】数据结构之求二叉树的高度
c语言·开发语言·数据结构·算法
HUT_Tyne26524 分钟前
力扣--LCR 53.最大数组和
算法·leetcode·动态规划
南宫生25 分钟前
力扣-数据结构-1【算法学习day.72】
java·数据结构·学习·算法·leetcode
MyselfO(∩_∩)O30 分钟前
数据结构与算法作业(五)
算法
chenziang138 分钟前
leetcode hot100 删除链表的第n个节点
算法·leetcode·链表
thesky1234561 小时前
活着就好20241225
学习·算法
Xenia2231 小时前
复习篇~第二章程序设计基础
c++·算法
清炒孔心菜1 小时前
每日一题 342. 4的幂
leetcode
想睡觉 . 我也想睡觉 .1 小时前
【C++算法】1.【模板】前缀和
开发语言·c++·算法
mit6.8241 小时前
[数据结构] LRU Cache | List&Map 实现
算法