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.

    经典动态规划。

    状态方程: dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];

    public class Solution {
        public int minPathSum(int[][] grid) {
            if(grid == null) {
                return 0;
            }
            
            int rows = grid.length;
            int cols = grid[0].length;
            
            int[][] dp = new int[rows][cols];
            
            dp[0][0] = grid[0][0];
            
            // initialize the first row
            for(int i = 1; i < cols; i++) {
                dp[0][i] = dp[0][i - 1] + grid[0][i];
            }
            
            //initialize the first col
             for(int i = 1; i < rows; i++) {
                dp[i][0] = dp[i - 1][0] + grid[i][0];
            }
            
            for(int i = 1; i < rows; i++) {
                for(int j = 1; j < cols; j++) {
                    dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
                }
            }
            
            return dp[rows - 1][cols - 1];
        }
    }
    

      

  • 相关阅读:
    Python中的赋值(复制)、浅拷贝与深拷贝
    review
    Python网络编程
    云计算网络 ASW DSW CSW LSW
    Python文件操作 I/O
    RSI 指标
    python 常见模块
    Python模块和包
    读利弗莫尔
    GDP、CPI、M2
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6479149.html
Copyright © 2011-2022 走看看