LeetCode - 62. Unique Paths
2016-07-09 17:06
218 查看
这道题是一道典型的动态规划题目,在题目中出现以下情况的话经常要考虑使用动态规划的方法:
而动态规划的话,通常会有以下几种类型:Matrix, Sequence, Two Sequences和Backpack。这道题目就是Matrix DP,而在Matrix DP中,有四个步骤需要考虑:
state: f[x][y]表示从起点走到坐标x,y...
function: 研究最后一步怎么走
initialize: 起点
answer: 终点
对于这道特定的题目,有以下的情况:
因为最后一步走法的数量等于从上面来的走法的数量+从左边来的走法的数量,另外需要注意的是,动态规划中用到二维数组的话,最好把[i][0]和[0][j]也进行初始化一下。时间复杂度为O(n^2),空间复杂度为O(m * n),代码如下:
知识点:
1. 使用动态规划的情况,以及培养动态规划的思想
2. 处理动态规划问题的四个要素,以及每一步所代表的意义
3. 动态规划中使用到二维数组的话,最好把[i][0], [0][j]也初始化一下
4. 注意这里题目中规定了只能向下或向右走,如果没有这个规定的话,那么不能使用动态规划去处理这个问题,因为我们没有办法去找function之间的关系
而动态规划的话,通常会有以下几种类型:Matrix, Sequence, Two Sequences和Backpack。这道题目就是Matrix DP,而在Matrix DP中,有四个步骤需要考虑:
state: f[x][y]表示从起点走到坐标x,y...
function: 研究最后一步怎么走
initialize: 起点
answer: 终点
对于这道特定的题目,有以下的情况:
因为最后一步走法的数量等于从上面来的走法的数量+从左边来的走法的数量,另外需要注意的是,动态规划中用到二维数组的话,最好把[i][0]和[0][j]也进行初始化一下。时间复杂度为O(n^2),空间复杂度为O(m * n),代码如下:
public class Solution { public int uniquePaths(int m, int n) { int[][] matrix = new int[m] ; // Initialize for(int i = 0; i < m; i++){ matrix[i][0] = 1; } for(int j = 0; j < n; j++){ matrix[0][j] = 1; } // DP for(int i = 1; i < m; i++){ for(int j = 1; j < n; j++){ matrix[i][j] = matrix[i - 1][j] + matrix[i][j - 1]; } } return matrix[m - 1][n - 1]; } }
知识点:
1. 使用动态规划的情况,以及培养动态规划的思想
2. 处理动态规划问题的四个要素,以及每一步所代表的意义
3. 动态规划中使用到二维数组的话,最好把[i][0], [0][j]也初始化一下
4. 注意这里题目中规定了只能向下或向右走,如果没有这个规定的话,那么不能使用动态规划去处理这个问题,因为我们没有办法去找function之间的关系
相关文章推荐
- C#使用Matrix执行缩放的方法
- 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
- 如何利用matrix实现图片倒影效果
- Android中Matrix用法实例分析
- Android中使用Matrix控制图形变换和制作倒影效果的方法
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- HP Z800 Workstation - Configuring RAID devices (HP Z800 做磁盘Raid1,Raid0的阵列)
- Android Matrix类以及ColorMatrix类详解
- leetcode----Longest Substring Without Repeating Characters
- 用css实现图片的旋转
- 让舞台上的按钮btn灰掉
- Android中Bitmap和Drawable
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum