zoukankan      html  css  js  c++  java
  • Leetcode:64. Minimum Path Sum

    Description

    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.

    思路

    • 动态规划,用一个二维数组记录状态,dp[i][j]表示从(0,0)到(i,j)的最小路径长度
    • dp[i][j] = min(dp[i][j-1], dp[i-1][j]) + grid[i][j]

    代码

    • 二维数组
    class Solution {
    public:
        int minPathSum(vector<vector<int>>& grid) {
            int m = grid.size();
            if(m == 0) return 0;
            int n = grid[0].size();
            
            vector<vector<int>> dp(m, vector<int>(n, 0));
            dp[0][0] = grid[0][0];
            int i = 0, j = 0;
            for(i = 1; i < m; ++i)
                dp[i][0] = dp[i - 1][0] + grid[i][0];
                
            for(j = 1; j < n; ++j)
                dp[0][j] = dp[0][j - 1] + grid[0][j];
                
            for(i = 1; i < m; ++i){
                for(j = 1; j < n; ++j){
                    dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
                }
            }
            
            return dp[m - 1][n - 1];
        }
    };
    
  • 相关阅读:
    python:xlrd模块
    psql:转:会引起全表扫描的10种sql语句
    Linux相关
    面试题
    Siege Web服务器性能压力测试工具
    Nginx+uWSGI+Supervisor配置
    SQLAlchemy
    Virtualenv创建虚拟环境
    算法
    Mac常用快捷键
  • 原文地址:https://www.cnblogs.com/lengender-12/p/6900811.html
Copyright © 2011-2022 走看看