zoukankan      html  css  js  c++  java
  • 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.
    
     Notice
    
    m and n will be at most 100.
    
    Have you met this question in a real interview? Yes
    Example
    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.
    
    Tags 

    初始化, if 判断不同的状态

    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
            // write your code here
            if (obstacleGrid == null || obstacleGrid.length == 0) {
                return -1;
            }
            int m = obstacleGrid.length;
            int n = obstacleGrid[0].length;
            //state
            int[][] sum = new int[m][n];
            //initialize
            if (obstacleGrid[0][0] == 1) {
                sum[0][0] = 0;
            } else {
                sum[0][0] = 1;
            }
            for (int i = 1; i < n; i++) {
                if (obstacleGrid[0][i] == 1 || sum[0][i - 1] == 0) {
                    sum[0][i] = 0;
                } else {
                    sum[0][i] = 1;
                }
            }
            for (int i = 1; i < m; i++) {
                if (obstacleGrid[i][0] == 1 || sum[i - 1][0] == 0) {
                    sum[i][0] = 0;
                } else {
                    sum[i][0] = 1;
                }
            }
            
            //function
            for (int i = 1; i < m; i++) {
                
               for (int j = 1; j < n; j++) {
                    if (obstacleGrid[i][j] == 1) {
                        sum[i][j] = 0;
                    } else {
                        sum[i][j] = sum[i - 1][j] + sum[i][j - 1];
                    }
                }
            }
            //ans
            return sum[m - 1][n - 1];
            }
    

      

  • 相关阅读:
    变量
    数据类型
    常量
    synchronized&volatile
    类,方法,成员变量和局部变量的可用修饰符
    类及其组成所使用的常见修饰符
    四种权限修饰符
    import
    finally
    final
  • 原文地址:https://www.cnblogs.com/apanda009/p/7290888.html
Copyright © 2011-2022 走看看