[LeetCode]题解(python):063-Unique Paths II
2015-11-30 20:27
555 查看
[b]题目来源:[/b]
https://leetcode.com/problems/unique-paths-ii/
[b]题意分析:[/b]
这题的规则和上一题一样。给一个m×n的矩阵0,1矩阵。0代表可以经过,1代表不可以通过。返回从(0,0)到(m,n)一共有多少种走法。
[b]题目思路:[/b]
这题如果还是用组合的方法做将会非常复杂,所以组合的方法不再考虑。不难发现,从(0,0)到(i,j)的所有可能等于(0,0)到(i - 1,j)和(0,0)到(i,j-1)的和。那么建立一个m×n的表a,a[i][j]代表(0,0)到(i,j)的走法。把表填满,就可以得到结果。时间复杂度是O(m×n)
[b]代码(python):[/b]
View Code
转载请注明出处:http://www.cnblogs.com/chruny/p/5008277.html
https://leetcode.com/problems/unique-paths-ii/
[b]题意分析:[/b]
这题的规则和上一题一样。给一个m×n的矩阵0,1矩阵。0代表可以经过,1代表不可以通过。返回从(0,0)到(m,n)一共有多少种走法。
[b]题目思路:[/b]
这题如果还是用组合的方法做将会非常复杂,所以组合的方法不再考虑。不难发现,从(0,0)到(i,j)的所有可能等于(0,0)到(i - 1,j)和(0,0)到(i,j-1)的和。那么建立一个m×n的表a,a[i][j]代表(0,0)到(i,j)的走法。把表填满,就可以得到结果。时间复杂度是O(m×n)
[b]代码(python):[/b]
class Solution(object): def uniquePathsWithObstacles(self, obstacleGrid): """ :type obstacleGrid: List[List[int]] :rtype: int """ m,n = len(obstacleGrid),len(obstacleGrid[0]) ans = [[0 for i in range(n)] for j in range(m)] ans[0][0] = 1 for i in range(m): for j in range(n): if obstacleGrid[i][j] == 1: ans[i][j] = 0 elif i != 0 and j == 0: ans[i][j] = ans[i - 1][j] elif i == 0 and j != 0: ans[i][j] = ans[i][j - 1] elif i != 0 and j != 0: ans[i][j] = ans[i -1][j] + ans[i][j - 1] return ans[m - 1][n - 1]
View Code
转载请注明出处:http://www.cnblogs.com/chruny/p/5008277.html
相关文章推荐
- python range范围
- Python3 基本数据类型注意事项
- [LeetCode]题解(python):062-Unique Paths
- Python爬取豆瓣电影top250
- leetcode之Remove Duplicates from Sorted List
- Ubuntu 14.04下OpenCV 3.0+Python 2.7安装测试
- python题目:一个小小的猜名有戏
- python 3 UDP小例子
- 关于 python 的 @property总结和思考
- Python批量修改文件名-后缀
- python oop __slots__方法
- [转载]Python注册表信息丢失的解决方案
- Python之封装diff命令的项目比较命令(格式化diff输出结果)
- 第一个python程序
- python学习系列之python装饰器基础(5)---多装饰器的使用
- Python常见问题和技巧
- Python+Selenium自动化
- python subprocess,ConfigParser
- Python的星号(*、**)的作用
- python地理处理包——pyproj官方中文文档