zoukankan      html  css  js  c++  java
  • 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];
    }
  • 相关阅读:
    (二)WCF的Binding模型
    (一)WCF基础
    EF映射——从数据库更新实体
    没有什么不可能(1)
    MySQL SQL Training
    MySQL 并发事务问题以及事务的隔离级别
    MySQL 数据库面试题
    MySQL create table语法详解
    MySQL create table语法中的key与index的区别
    MySQL 官方样板数据库sakila
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3803205.html
Copyright © 2011-2022 走看看