Problem: 3148. 矩阵中的最大得分
👨🏫 参考题解
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; // 返回最终计算出的最大总得分}
}