#!/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]])
64 leetcode - Unique Paths II
最新推荐文章于 2024-11-04 12:20:00 发布