解题思路:
枚举以每个元素为终点,那么想要得分最大,需要找到位置小于该元素的最小值,可以用前缀最小值维护每个元素之前的最小值。
class Solution { public int maxScore(List<List<Integer>> grid) { int n=grid.size(),m=grid.get(0).size(); int[][] premin=new int[n][m]; int ans=Integer.MIN_VALUE; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int left=Integer.MAX_VALUE,up=Integer.MAX_VALUE; if(i!=0){ up=premin[i-1][j]; } if(j!=0){ left=premin[i][j-1]; } ans=Math.max(ans,grid.get(i).get(j)-Math.min(left,up)); premin[i][j]=Math.min(Math.min(left,up),grid.get(i).get(j)); } } return ans; } }
3148. 矩阵中的最大得分
最新推荐文章于 2024-09-13 16:27:15 发布