62. Unique Paths & 63. Unique Paths II(唯一路径1&2)
来源:互联网 发布:淘宝店铺提高销量 编辑:程序博客网 时间:2024/05/15 23:48
62. Unique Paths & 63. Unique Paths II(唯一路径1&2)
- Unique Paths 63 Unique Paths II唯一路径12
- Unique Paths
- 题目链接
- 题目描述
- 题目分析
- 方法动态规划
- 算法描述
- 方法动态规划
- 参考代码
- Unique Paths II
- 题目链接
- 题目描述
- 题目分析
- 方法动态规划
- 算法描述
- 方法动态规划
- 参考代码
- Unique Paths
62. Unique Paths
题目链接
https://leetcode.com/problems/unique-paths/description/
题目描述
A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked ‘Finish’ in the diagram below).
How many possible unique paths are there?
Above is a 3 x 7 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
题目分析
由于题目规定只能向下或向右移动,那么对于任意方格grid[i][j]
我们可以直接得到状态转移方程: grid[i][j] = grid[i - 1][j] + grid[i][j - 1]
为了提高效率,我们可以使用递推的方法。通过进一步的考虑,事实上并不需要二维数组保存每个方格的路径数量,使用一维数组可以进一步降低空间复杂度。
方法:动态规划
算法描述
初始化长度为n
的数组,每个元素值为1
循环m
次,在每一次循环中:
从下标为1
的元素开始遍历,对于每一个元素: steps[j] += steps[j - 1]
参考代码
class Solution {public: int uniquePaths(int m, int n) { vector<int> steps(n, 1); for (int i = 1; i < m; i++) for (int j = 1; j < n; j++) steps[j] += steps[j - 1]; return steps[n - 1]; }};
63. Unique Paths II
题目链接
https://leetcode.com/problems/unique-paths-ii/description/
题目描述
Follow up for “Unique Paths”:
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as
1
and0
respectively in the grid.For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[
[0,0,0],
[0,1,0],
[0,0,0]
]The total number of unique paths is
2
.Note: m and n will be at most 100.
题目分析
这道题目和上一道基本类似,唯一不同的是对障碍的处理,当地图上某点为障碍时,这一点的路径为0
方法:动态规划
算法描述
算法与上题相同,在遍历时考虑地图上此点是否为障碍,若为障碍,路径为0
参考代码
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(), n = obstacleGrid[0].size(); vector<int> steps(n, 0); steps[0] = 1; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) { if (obstacleGrid[i][j]) steps[j] = 0; else if (j) steps[j] += steps[j - 1]; } return steps[n - 1]; }};
- 62. Unique Paths & 63. Unique Paths II(唯一路径1&2)
- LeetCode 63. Unique Paths II(唯一路径)
- 62. Unique Paths&&63. Unique Paths II 路径
- 62. Unique Paths && 63. Unique Paths II
- 62. Unique Paths \ 63. Unique Paths II
- LeetCode | Unique Paths II(唯一路径II)
- Unique Paths和Unique Paths II 路径
- leetcode 63. Unique Paths II-唯一路径|动态规划
- LeetCode | Unique Paths(唯一路径)
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- I2C工作原理
- 幻方矩阵
- 过滤器-禁止未授权的IP访问站点
- 记一次samba的配置经历
- 简单粗暴地理解 JavaScript 原型链
- 62. Unique Paths & 63. Unique Paths II(唯一路径1&2)
- MarkDown 高级操作
- [leetcode]215. Kth Largest Element in an Array
- mysql 字符集utf8设置 ,中文乱码mysql设置
- 基于docker的ceph集群
- LeetCode 104 Maximum Depth of Binary Tree
- 开发了一个手机版的书讯网站
- Unity3D-初识Unity
- 心算小程序