LeetCode063 Unique Paths II

    xiaoxiao2021-04-14  55

    详细见:leetcode.com/problems/unique-paths-ii

    Java Solution: github

    package leetcode; public class P063_UniquePathsII { public static void main(String[] args) { System.out.println(new Solution1().uniquePathsWithObstacles(new int[][] { {1}, {0} })); } /* * 多次WA * 还是要注意逻辑的缜密 * 1 ms * 20.72% */ static class Solution1 { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if (obstacleGrid == null || obstacleGrid[0] == null) return 0; int m = 0, n = 0; if ((m = obstacleGrid.length) < 1 || (n = obstacleGrid[0].length) < 1) return 0; int[] route = new int[m]; route[0] = obstacleGrid[0][0] == 0 ? 1 : 0; for (int j = 1; j < m; j ++) route[j] = obstacleGrid[j][0] == 0 ? route[j - 1] : 0; for (int i = 1; i < n; i ++) { route[0] = obstacleGrid[0][i] == 0 ? route[0] : 0; for (int j = 1; j < m; j ++) route[j] = obstacleGrid[j][i] == 0 ? route[j] + route[j - 1] : 0; } return route[m - 1]; } } }

    C Solution: github

    /* url: leetcode.com/problems/unique-paths-ii */ int uniquePathsWithObstacles(int** g, int m, int n) { int* dp = (int*) malloc(sizeof(int) * n); int i = 0, j = 0; for (j = n-1; j > -1; j --) { dp[j] = (j == n-1 || dp[j+1] == 1) && g[m-1][j] == 0 ? 1 : 0; } for (i = m-2; i > -1; i --) { if (g[i][n-1] == 1) dp[n-1] = 0; for (j = n-2; j > -1; j --) { if (g[i][j] == 1) dp[j] = 0; else dp[j] += g[i][j+1] == 1 ? 0 : dp[j+1]; } } i = dp[0]; free(dp); return i; }

    Python Solution: github

    #coding=utf-8 ''' url: leetcode.com/problems/unique-paths-ii @author: zxwtry @email: zxwtry@qq.com @date: 2017年4月13日 @details: Solution: 66ms 18.15% ''' class Solution(object): def uniquePathsWithObstacles(self, g): """ :type g: List[List[int]] :rtype: int """ if g == None or g[0] == None: return 0 m = len(g) n = len(g[0]) dp = [0] * n for j in range(n-1, -1, -1): if j == n-1 or dp[j+1] == 1: if g[m-1][j] == 0: dp[j] = 1 continue dp[j] = 0 for i in range(m-2, -1, -1): if g[i][n-1] == 1: dp[n-1] = 0 for j in range(n-2, -1, -1): if g[i][j] == 1: dp[j] = 0 else:dp[j] += 0 if g[i][j+1] == 1 else dp[j+1] return dp[0]

    转载请注明原文地址: https://ju.6miu.com/read-670708.html

    最新回复(0)