leetcode-63-不同路径②

题目描述:

第一次提交:

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid) :
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])
        for i in range(m):
            for j in range(n):
                if i==0 and j==0:
                    if obstacleGrid[i][j] == 1:
                        return 0
                    else:obstacleGrid[i][j] = 1
                elif j==0:
                    if obstacleGrid[i][j]==1:
                        obstacleGrid[i][j]=0
                    else:
                        obstacleGrid[i][j]=obstacleGrid[i-1][j]
                elif i==0:
                    if obstacleGrid[i][j]==1:
                        obstacleGrid[i][j]=0
                    else:
                        obstacleGrid[i][j]=obstacleGrid[i][j-1]
                else:
                    if obstacleGrid[i][j]==1:
                        obstacleGrid[i][j]=0
                    else:
                        obstacleGrid[i][j]=obstacleGrid[i-1][j]+obstacleGrid[i][j-1]
        return obstacleGrid[-1][-1]

 参考:O(mn) O(1)

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid) :
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])
        if obstacleGrid[0][0] == 1:
            return 0
        obstacleGrid[0][0] = 1
        for i in range(1,m): 
            obstacleGrid[i][0] = int(obstacleGrid[i][0] == 0 and obstacleGrid[i-1][0] == 1) 
        for j in range(1, n): 
            obstacleGrid[0][j] = int(obstacleGrid[0][j] == 0 and obstacleGrid[0][j-1] == 1)
        for i in range(1,m): 
            for j in range(1,n): 
                if obstacleGrid[i][j] == 0: 
                    obstacleGrid[i][j] = obstacleGrid[i-1][j] + obstacleGrid[i][j-1] 
                else: obstacleGrid[i][j] = 0
        return obstacleGrid[-1][-1]

 

posted @ 2019-07-12 19:25  oldby  阅读(100)  评论(0编辑  收藏  举报