最大的礼物价值

题目内容:

解题代码:

class Solution {
    public int maxValue(int[][] grid) {
        /*
        1.对于这道题来讲,本质上就是寻找二维数组路径最大和
        2.起点只能是grid[0][0],终点只能是grid[m - 1][n - 1](就以本题来说的m和n,意思一样)
        3.对于每走的一格来说,这一步要么是上面或者左面来的
        4.针对于本题条件,我们从不断更新每个位置元素最大和来入手(最大与最大的相加那必然是最大的)
        5.最重要的一步(1)(2),这么做就是为了,先将边界处理好
          关于边界,对边界进行求和处理,这是为了,当进行循环计算时,如果恰好边界是正确顺序的时候,拿到的是和
        6.最后,双层循环,将数组其余的每个元素进行更新,确保每个位置元素都是当前位置最大的
        7.最后一个元素结束后,直接返回,他就是最大的和
        */
        int m = grid.length;
        int n = grid[0].length;
        //(1)
        for(int i = 1;i < n;i++){
            grid[0][i] = grid[0][i] + grid[0][i - 1];
        }
        //(2)
        for(int i = 1;i < m;i++){
            grid[i][0] = grid[i][0] + grid[i - 1][0];
        }

        for(int i = 1;i < m;i++){
            for(int j = 1;j < n;j++){
                grid[i][j] = grid[i][j] + Math.max(grid[i][j - 1],grid[i - 1][j]);
            }
        }
        return grid[m - 1][n - 1];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值