您的位置:首页 > 产品设计 > UI/UE

64 leetcode - Unique Paths II

2016-12-27 20:42 429 查看
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Unique Paths II
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 and 0 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.
'''
class Solution(object):
def uniquePathsWithObstacles(self, obstacleGrid):
"""
:type obstacleGrid: List[List[int]]
:rtype: int
"""
len_row = len(obstacleGrid)
if len_row == 0:
return 0
len_col = len(obstacleGrid[0])
if len_col == 0:
return 0

if obstacleGrid[0][0] == 1:
return 0

dp = [[0] * len_col for i in range(len_row)]
for col in range(len_col):
if obstacleGrid[0][col] == 1:
break
else:
dp[0][col] = 1

for row in range(len_row):
if obstacleGrid[row][0] == 1:
break
else:
dp[row][0] = 1

for row in range(1,len_row):
for col in range(1,len_col):
if obstacleGrid[row][col] == 1:
dp[row][col] = 0
else:
dp[row][col] = dp[row - 1][col] + dp[row][col - 1]

return dp[len_row - 1][len_col - 1]

if __name__ == "__main__":
s = Solution()
print s.uniquePathsWithObstacles([[0,0,0],[0,1,0],[0,0,0]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode Unique Paths II Python