classSolution: defuniquePathsWithObstacles(self, obstacleGrid): """ :type obstacleGrid: List[List[int]] :rtype: int """ if obstacleGrid isNoneor len(obstacleGrid) == 0: return0 ret = [ [0for i in range(len(obstacleGrid[0]))] for j in range(len(obstacleGrid)) ] for i in range(len(obstacleGrid[0])): if obstacleGrid[0][i] == 0: ret[0][i] = 1 else: break for j in range(len(obstacleGrid)): if obstacleGrid[j][0] == 0: ret[j][0] = 1 else: break for i in range(1, len(obstacleGrid)): for j in range(1, len(obstacleGrid[0])): if obstacleGrid[i][j] == 0: left = (0if obstacleGrid[i][j - 1] == 1else ret[i][j - 1]) up = (0if obstacleGrid[i - 1][j] == 1else ret[i - 1][j]) ret[i][j] = left + up return ret[-1][-1]