• Leetcode Minimum Path Sum


    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

    Note: You can only move either down or right at any point in time.

    做这题之前,建议先看一下Leetcode Triangle

    这题看懂了,然后把矩阵右旋45度后,再看此题感觉很相似,

    把斜次对角线(包括主对角线)看成行,然后按照Leetcode Triangle的思路去做即可

    如矩阵(矩阵的行数为n,矩阵的列数为m)

    1 1 1 1

    1 1 1 1

    1 1 1 1

    1 1 1 1

    对于每一行分别对于原始矩阵列的第1~m个元素

    决策变量为dp[i][j], 表示左上角到达第i行第j个元素最短路径

    动态转移方程为dp[i][j] = min(dp[i][j-1],dp[i-1][j]) + grid[i][j]

    由于二维数组空间比较大,本题对空间进行优化

    矩阵旋转45度后为

           1

         1   1

       1  1  1

    1   1   1   1

       1   1   1

         1   1

           1

    你会发现dp[i][j-1]和dp[i-1][j]处在同一行的相领元素,而他们之间下面的元素为dp[i][j],就类似Leetcode Triangle

    由于上一行的信息在下一行后不会用到,故利用滚动数组的去解决

    int minPathSum(vector<vector<int> >& grid){
        if(grid.empty()) return 0;
        int n = grid.size(), m = grid[0].size();
        vector<int> dp(m+1,INT_MAX);
        dp[1] = 0;
        for(int i = 0 ; i < n; ++ i){
            for(int j = 0; j < m ; ++ j){
                dp[j+1] = min(dp[j],dp[j+1]) + grid[i][j];
            }
        }
        return dp[m];
    }
  • 相关阅读:
    SpringBoot项目部署与服务配置
    JDBC链接oracle已经mysql的测试
    Jedis工具类
    jsp&Sevelet基础详解
    Mysql和Oracle数据库concat()函数
    如何在maven工程中加载oracle驱动
    获取日期的相关方法
    SpringBoot配置Email发送功能
    spring中schedule注解的使用
    新建一个新的spring boot项目
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3803205.html
Copyright © 2020-2023  润新知