zoukankan      html  css  js  c++  java
  • 最小路径和 动态规划

    题目:

    给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

    说明:每次只能向下或者向右移动一步。

    示例:

    输入:
    [
      [1,3,1],
    [1,5,1],
    [4,2,1]
    ]
    输出: 7
    解释: 因为路径 1→3→1→1→1 的总和最小。

    /**
     * @param {number[][]} nums
     * @return {number}
     */
    var minPathSum = function(nums) {
         let length = nums[0].length;
    for(let i=0;i<nums.length;i++){
            for(let j=0;j<length;j++){
                if(j==0&&i==0) continue;
                if(j==0&&i!=0){
                    nums[i][0] = nums[i][0]  + nums[i-1][0];
                }
                if(i==0&&j!=0){
                    nums[0][j] = nums[0][j]  + nums[0][j-1];
                }
                if(j!=0&&i!=0){
                    nums[i][j] = nums[i][j] + Math.min(nums[i-1][j],nums[i][j-1]);
                }
                
              
            }
        }
        return nums[nums.length-1][length-1];
    };

    实现:当第一行的时候,每个元素的的最小路径和始终是当前路径加上前一列的路径之和即:nums[i][j] = nums[0]j-1]+nums[0][j];

       当第一列的时候,每个元素的最小路径和始终是当前路径加上上一行的路径之和即:nums[i][j] =  nums[i-1][0] + nums[i][0] ;

       对于第一个元素nums[0][0]直接忽略计算,当前元素路径值就是最短路径和。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/minimum-path-sum
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    <转>Java 高并发综合
    <转>Spring 知识点提炼
    qqq
    ttt
    工作中的那些坑(2)——逆波兰表达式
    工作中的那些坑(1)——一次过滤存量数据的优化过程
    Java学习笔记
    《代码大全》笔记(一)
    由Cocos2d-x工程入口窥见代理模式
    makefile
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11700297.html
Copyright © 2011-2022 走看看