力扣3148.矩阵中的最大得分
-
类似二维前缀和
- 枚举右下角 求(i,j) - (0,0)的子矩阵的最小值
- 每次与当前点作差 求答案
cpp
class Solution {
public:
int maxScore(vector<vector<int>>& grid) {
int res = INT_MIN;
int m = grid.size(),n = grid[0].size();
vector<vector<int>> s(m+1,vector<int>(n+1,INT_MAX));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
int t = min(s[i][j+1],s[i+1][j]);
res = max(res,grid[i][j] - t);
s[i+1][j+1] = min(t,grid[i][j]);
}
return res;
}
};