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.
Note: You can only move either down or right at any point in time.
很简单的DP问题,只要看下DP的经典例题,转配线调度问题之后,这道题就很简单了。
题中说道只能向下或者向右走,因此到终点[m][n]要么从上面[m][n - 1]走下来,要么从左边[m - 1][n]走过来,看这两条路那条更短,如果上面的短,那么将[m][n - 1]当做终点。继续做这样的操作(因为本题目满足最优子结构)
public int minPathSum(int[][] grid) { if(grid == null){ return 0; } int row = grid.length; int column = grid[0].length; int max = row > column ? row : column; int min = row + column - max; int[][] result = new int[row][column]; result[0][0] = grid[0][0]; int i = 1; for(; i < max; i++){ if(i < row){ result[i][0] = result[i - 1][0] + grid[i][0]; } if(i < column){ result[0][i] = result[0][i - 1] + grid[0][i]; } } for(i = 1; i < row; i++){ for(int j = 1; j < column; j++){ result[i][j] = grid[i][j] + (result[i][j - 1] > result[i - 1][j] ? result[i - 1][j] : result[i][j - 1]); } } return result[row - 1][column - 1]; }
相关推荐
javascript js_leetcode题解之64-minimum-path-sum.js
java lru leetcode :ice_cream: LeetCode Kindem 的个人 LeetCode 题解仓库,欢迎交流学习。 下面的目录中 $number 题号代表经典 LeetCode 题目,$number.$number ...LeetCode ...Sum ...Sum ...Sum ...Minimum Path Sum 73
371 | [Sum of Two Integers](https://leetcode.com/problems/sum-of-two-integers/) | [C++](./C++/sum-of-two-integers.cpp) [Python](./Python/sum-of-two-integers.py) | _O(1)_ | _O(1)_ | Easy | LintCode | ...
Minimum Path Sum Unique Paths Unique Paths II Longest Palindromic Substring Interleaving String Triangle Distinct Subsequences Decode Ways Palindrome Partitioning II Maximal Rectangle ###Recursion N-...
31. Binary Tree Maximum Path Sum:二叉树中的最大路径和。 32. Binary Tree Upside Down:将一个二叉树进行翻转。 【位操作】 33. Single Number:找出数组中唯一不出现一次的数字。 34. Single Number II:找出...
- **Path Sum II**:寻找所有从根节点到叶节点的路径,其路径和等于给定的目标值。 - **Flatten Binary Tree to Linked List**:将二叉树展平为单链表。 - **Validate Binary Search Tree**:验证一个二叉树是否...
- Minimum Path Sum: 在一个m×n的网格中,找到从左上角到右下角的路径,使得路径上的数字总和最小。 - Plus One: 给定一个由整数组成的非空数组,表示一个非负整数,将这个整数加一。 - Add Binary: 给定两个二进制...
- 在 JumpGame 和 MinimumPathSum 题目中,动态规划用于找出跳跃游戏或路径选择中达到最优解的策略。 4. **堆栈**: - 堆栈数据结构可以用于处理与括号匹配、表达式求值等相关的题目。 - 在 ...
leetcode 【演示记录】 报告 展示 2017/03/06 1.二和,167.二和二 2107/03/06 15.3 总和,16.3 总和最近,18.4 总和,11.最多水的容器 2017/03/09 62.Unique Paths, 63.Unique Paths II, 64.Minimum Path Sum 2017/...
8. **栈与队列**:"Valid Parentheses"(有效括号)和"Minimum Size Subarray Sum"(最小覆盖子数组)这类题目会用到栈和队列的特性来处理问题。 9. **位操作**:位操作是计算机科学的基础,题目如"Number of 1 ...
二、Python3程序64_Minimum_Path_Sum 最小路径和# 利用动态规划的方法# 要到达索引为[r,l]的网格# 一是从[r,l-1]的网格向右
本题解关注的是第931题,即“下降路径最小和”(Minimum Falling Path Sum),这是一个典型的动态规划问题,对求职面试中的算法能力考察具有重要意义。 动态规划是一种解决复杂问题的有效方法,它通过将大问题分解...
7. **图论**:图论问题涉及节点和边的连接,如"最短路径"(Shortest Path)或"最小生成树"(Minimum Spanning Tree)。 8. **排序与查找**:快速排序、归并排序、二分查找等经典算法在LeetCode中也有体现,例如"三...
- 图的遍历和最短路径问题如“最短路径问题”(Shortest Path in Graph)和“最小生成树”(Minimum Spanning Tree),常常涉及到深度优先搜索(DFS)和广度优先搜索(BFS)。C++的邻接矩阵或邻接表可以表示图结构...
9. **图算法**:图问题如"最短路径"(Shortest Path)和"最小生成树"(Minimum Spanning Tree),通常涉及深度优先搜索(DFS)或广度优先搜索(BFS)。 这个"LeetCode-master"压缩包很可能是包含了针对以上各种问题...
- **数组**:数组是最基本的数据结构,LeetCode中的数组问题涉及排序、查找、子数组等,如"两数之和"(Two Sum)。 - **链表**:链表操作问题,如"反转链表"(Reverse Linked List)和"合并两个有序链表"(Merge ...
5. 最小路径和:这是一个典型的二维数组动态规划问题,LeetCode的第15 minimum path sum题目。目标是从左上角到右下角找到经过的所有单元格的最小和,每次可以向右或向下移动。可以创建一个二维数组dp,dp[i][j]表示...
6. **二叉树**:二叉树问题包括前序、中序、后序遍历、平衡二叉树等,如"二叉搜索树的最小绝对差"(Minimum Absolute Difference in BST),要求找到二叉搜索树中相邻节点的最大差值。 7. **图**:图的问题如"最短...