• LintCode-Unique Path 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.

    Note

    m and n will be at most 100.

    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.

    Analysis:

    DP: d[i][j] = d[i][j-1]+d[i-1][j].

    NOTE: We can use 1D array to perform the DP. Since d[i][j] depends on d[i][j-1], i.e., the new d[][j-1], we should increase j from 0 to end. If d[i][j] depends on d[i-1][j-1] then we should decrease j from end to 0.

    Solution:

     1 public class Solution {
     2     /**
     3      * @param obstacleGrid: A list of lists of integers
     4      * @return: An integer
     5      */
     6     public int uniquePathsWithObstacles(int[][] obstacleGrid) {
     7         int rowNum = obstacleGrid.length;
     8         if (rowNum==0) return 0;
     9         int colNum = obstacleGrid[0].length;
    10         if (colNum==0) return 0;
    11         if (obstacleGrid[0][0]==1) return 0;        
    12 
    13         int[] path = new int[colNum];
    14         path[0] =1;
    15         for (int i=1;i<colNum;i++)
    16             if (obstacleGrid[0][i]==1) path[i]=0;
    17             else path[i] = path[i-1];
    18 
    19         for (int i=1;i<rowNum;i++){
    20             if (obstacleGrid[i][0]==1) path[0]=0;
    21             for (int j=1;j<colNum;j++)
    22                 if (obstacleGrid[i][j]==1) path[j]=0;
    23                 else path[j]=path[j-1]+path[j];
    24             
    25         }
    26             
    27 
    28         return path[colNum-1];
    29     }
    30 }
  • 相关阅读:
    SessionAttributes注解
    数据格式化
    数据类型转换器
    线程的常用方法总结
    线程生命周期
    分析配置DispatcherServlet类时load-on-startup标签作用
    springMVC的执行请求过程
    MyBatis之动态SQL
    MyBatis实现
    Spring框架中的JDK与CGLib动态代理
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4192794.html
Copyright © 2020-2023  润新知