Leetcode WC-108-03 931-下降路径最小和

2018.10.28 12:15

给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。

下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。

示例:

输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:12
解释:
可能的下降路径有:
  • [1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9]
  • [2,4,7], [2,4,8], [2,5,7], [2,5,8], [2,5,9], [2,6,8], [2,6,9]
  • [3,5,7], [3,5,8], [3,5,9], [3,6,8], [3,6,9]

和最小的下降路径是 [1,4,7],所以答案是 12

提示:

  1. 1 <= A.length == A[0].length <= 100
  2. -100 <= A[i][j] <= 100

分析:

  1.简单思路:

    从第二行开始,将该行数据更新为[改行数据+上一行相邻最小值]

    返回最后一行最小值

  2.其他思路:

    暂无

 1 # python3
 2
 3 class Solution:
 4     def minFallingPathSum(self, A):
 5         """
 6         :type A: List[List[int]]
 7         :rtype: int
 8         """
 9         length=len(A)
10         for i in range(1,length):
11             A[i][0]+=min(A[i-1][0],A[i-1][1])
12             A[i][-1]+=min(A[i-1][-1],A[i-1][-2])
13             for j in range(1,length-1):
14                 A[i][j]+=min(A[i-1][j-1],A[i-1][j],A[i-1][j+1])
15         return min(A[-1])

原文地址:https://www.cnblogs.com/tenjl-exv/p/9865075.html

时间: 2024-10-08 16:34:32

Leetcode WC-108-03 931-下降路径最小和的相关文章

[Leetcode]931.下降路径最小和

题目链接 这一题目首先需要弄懂题目的意思,下降路径最小和指的是在方阵中可以从上往下行走,走过后获得的值最小,方向可以是走左下,右下,直下. 题目和传统的动态规划一样,把边界的值先初始化,然后通过状态转移一步一步到最后一行 我们有dp[i][j]:意思是终点为(i,j)的下降路径最小值 状态方程为 dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i-1][j+1])+A[i][j] ; 分别代表从左上(i-1,j-1),从正上方(i-1,j),从右上方(i-

[Swift Weekly Contest 108]LeetCode931. 下降路径最小和 | Minimum Falling Path Sum

Given a square array of integers A, we want the minimum sum of a falling path through A. A falling path starts at any element in the first row, and chooses one element from each row.  The next row's choice must be in a column that is different from t

LeetCode 5129. 下降路径最小和 II Minimum Falling Path Sum II

地址 https://leetcode-cn.com/contest/biweekly-contest-15/problems/minimum-falling-path-sum-ii/ 题目描述给你一个整数方阵 arr ,定义「非零偏移下降路径」为:从 arr 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列. 请你返回非零偏移下降路径数字和的最小值. 示例 1: 输入:arr = [[1,2,3],[4,5,6],[7,8,9]] 输出:13 解释: 所有非零偏移

[Leetcode]120.三角形路径最小和

---恢复内容开始--- 题目的链接 简单的动态规划题,使用了二维dp数组就能很好的表示. 由于有边界的问题,所以这个dp数组为 dp[n+1][n+1]. dp[i][j]意思是终点为(i-1,j-1)点的路径最小和. 我们需要把这个三角形变成方阵来看,先看看样例: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 变成方阵之后就变成了 [ [2, INT_MAX,INT_MAX, INT_MAX], [3,               4,INT_MAX, INT_MAX

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. 首先每一个路径的上一个路径都是来自于其上方和左方 现将最上面的路径进行求和,最左边的路径进行求和

LeetCode OJ 108. Convert Sorted Array to Binary Search Tree DFS求解

题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 108. Convert Sorted Array to Binary Search Tree My Submissions Question Total Accepted: 68378 Total Submissions: 187560 Difficulty: Medium Given an array where elements ar

HDOJ 5294 Tricks Device 最短路(记录路径)+最小割

最短路记录路径,同时求出最短的路径上最少要有多少条边, 然后用在最短路上的边重新构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1584    Accepted Submission(s): 388 Problem Description Innocent Wu follows Dumb Z

LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)

题目标签:Dynamic Programming 题目给了我们一组 cost,让我们用最小的cost 走完楼梯,可以从index 0 或者 index 1 出发. 因为每次可以选择走一步,还是走两步,这里用 dynamic, 从index 2 (第三格楼梯开始) 计算每一个楼梯,到达需要用的最小cost. 在每一个楼梯,只需要计算 从前面2格楼梯过来的cost, 和 从前面1格楼梯过来的 cost,哪个小.就选哪个叠加自己的cost.最后 index = len 的地方就是走到top 所用的最小

图解leetcode —— 124. 二叉树中的最大路径和

前言: 每道题附带动态示意图,提供java.python两种语言答案,力求提供leetcode最优解. 描述: 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] -10   / \  9  20    /  \   15   7 输出: 42 思路: java